本篇学习Iterator的迭代器函数操作,具体函数如下:
定义于头文件 | |
advance | 令迭代器前进给定的距离 (函数模板) |
distance | 返回两个迭代器间的距离 |
begin | 开始迭代器 (函数模板) |
end | 结束迭代器 (函数模板) |
next (C++11) | 令迭代器自增 (函数模板) |
prev (C++11) | 令迭代器自减 (函数模板) |
代码示例1
advance我们知道list列表可以取头元素和尾元素,那如果要取中间元如果操作呢,因为它没有[i]也有没at(i)操作,那么使用advance函数就可以取到中间的任意元素,具体示例如下:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31#include <iostream> #include <iterator> #include <list> using namespace std; int main() { list<int> 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<int>::iterator it = mylist.begin(); std::advance(it, 4); cout << "The five element in mylist is: " << *it << endl; list<int>::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取两个迭代器之间的距离
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25#include <iostream> #include <iterator> #include <vector> using namespace std; int main() { list<int> mylist{10,20,30,40,50,60,70,80,90,100}; std::list<int>::iterator first = mylist.begin(); std::list<int>::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<int> vec{32, 15, 43, 25, 36}; std::vector<int>::iterator vfirst = vec.begin(); std::vector<int>::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开始迭代器
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19#include <iostream> #include <iterator> #include <vector> using namespace std; int main() { //3.begin std::vector<int> vec{32, 15, 43, 25, 36}; std::vector<int>::iterator iter2 = vec.begin(); //取vector第2个元素 ++iter2; std::cout << "vector iter2 = " << *iter2 << 'n'; cout << "Hello World!" << endl; return 0; }
代码示例4 end结束迭代器
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29#include <iostream> #include <iterator> #include <vector> using namespace std; int main() { std::vector<int> vec{32, 15, 43, 25, 36}; //取vector最后一个元素 std::vector<int>::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; }
最后
以上就是大力薯片最近收集整理的关于Iterator 学习之迭代器函数操作的全部内容,更多相关Iterator内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复