我是靠谱客的博主 大力薯片,这篇文章主要介绍Iterator 学习之迭代器函数操作,现在分享给大家,希望可以做个参考。

本篇学习Iterator的迭代器函数操作,具体函数如下:

定义于头文件 <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内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(66)

评论列表共有 0 条评论

立即
投稿
返回
顶部