本篇学习Iterator的迭代器函数操作,具体函数如下:
| 定义于头文件 "> | |
| advance | 令迭代器前进给定的距离 (函数模板) |
| distance | 返回两个迭代器间的距离 |
| begin | 开始迭代器 (函数模板) |
| end | 结束迭代器 (函数模板) |
| next (C++11) | 令迭代器自增 (函数模板) |
| prev (C++11) | 令迭代器自减 (函数模板) |
代码示例1
advance我们知道list列表可以取头元素和尾元素,那如果要取中间元如果操作呢,因为它没有[i]也有没at(i)操作,那么使用advance函数就可以取到中间的任意元素,具体示例如下:
#include#include #include using namespace std; int main() { list
mylist{10,20,30,40,50,60,70,80,90,100}; for(auto li = mylist.begin(); li != mylist.end(); ++li) { cout << *li << "t"; } cout << "n"; //取第5个无素 list ::iterator it = mylist.begin(); std::advance(it, 4); cout << "The five element in mylist is: " << *it << endl; list ::iterator it1 = mylist.begin(); std::advance(it1, 6); cout << "The seven element in mylist is: " << *it1 << endl; *it1 = 90; for(auto li = mylist.begin(); li != mylist.end(); ++li) { cout << *li << "t"; } cout << "n"; cout << "Hello World!" << endl; return 0; }
代码示例2 distance取两个迭代器之间的距离
#include#include #include using namespace std; int main() { list mylist{10,20,30,40,50,60,70,80,90,100}; std::list ::iterator first = mylist.begin(); std::list ::iterator last = mylist.end(); std::cout << "list distance(first, last) = " << std::distance(first, last) << 'n'; //std::cout << "list distance(last, first) = " << std::distance(last, first) << 'n'; //list不能使用 std::vector vec{32, 15, 43, 25, 36}; std::vector ::iterator vfirst = vec.begin(); std::vector ::iterator vlast = vec.end(); std::cout << "vector distance(first, last) = " << std::distance(vfirst, vlast) << 'n'; std::cout << "vector distance(last, first) = " << std::distance(vlast, vfirst) << 'n'; cout << "n"; cout << "Hello World!" << endl; return 0; }
代码示例3 begin开始迭代器
#include#include #include using namespace std; int main() { //3.begin std::vector vec{32, 15, 43, 25, 36}; std::vector ::iterator iter2 = vec.begin(); //取vector第2个元素 ++iter2; std::cout << "vector iter2 = " << *iter2 << 'n'; cout << "Hello World!" << endl; return 0; }
代码示例4 end结束迭代器
#include#include #include using namespace std; int main() { std::vector vec{32, 15, 43, 25, 36}; //取vector最后一个元素 std::vector ::iterator iter = vec.begin(); while(iter != vec.end()) { ++iter; if(iter == vec.end()) { //取最后一个元素 --iter; std::cout << "vector iter = " << *iter << 'n'; break; } } cout << "n"; cout << "Hello World!" << endl; return 0; }



