顺序容器(迭代器)--C++复习

Posted jiang-021

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了顺序容器(迭代器)--C++复习相关的知识,希望对你有一定的参考价值。

一、像使用指针可以遍历数组一样,我们可以使用迭代器来遍历容器

二、迭代器常用运算:

       1.*ite返回迭代器所指向的元素的引用(ite是一个迭代器);

       2.ite->mem:获取迭代器中指定元素名为mem的成员,等价于(*item).mem;

       3.++ite/ite++:给ite加1,指向下一个元素;同--

       4.ite1==ite2,比较两个迭代器是否相等,即是否是指向同一个容器的同一个元素

三、vector和deque提供的额外运算

       1.ite+/-n:返回指向后/前n个元素的迭代器

       2.ite1+=ite2:ite1+ite2赋值给ite1;同-=

       3.>,>=,<,<=:比较前后位置大小

四、迭代器取值范围

       [first,last),前闭后开,返回第一个元素的位置和最后一个元素位置的后面

五、实例

 1 class Person
 2 
 3     public:
 4         int pid;
 5         void print()cout<<pid<<endl;;//内联函数
 6 
 7 
 8 vector<Person> vp;
 9 Person p1;
10 p1.pid=1;
11 Person p2;
12 p2.pid=2;
13 Person p3;
14 p3.pid=3;
15 
16 vp.push_back(p1);
17 vp.push_back(p2);
18 vp.push_back(p3);//vp容器里面保存的是Person对象
19 
20 //得到一个常量迭代器
21 vector<Person>::const_iteratot it=vp.begin();//获得指向第一个元素的迭代器
22 //拿到迭代器之后,我们可以直接来访问
23 Person px=*it;//it迭代器是指向当前元素的一个指针,就可以通过解引用来得到当前对象
24 //这样还能直接调用类函数
25 px.print();
26 //另一种用法,去掉const
27 vector<Person>::iteratot it=vp.begin();
28 it->print();//指针访问它里面的元素用->
29 (*it).print();//二者等价,写法较麻烦
30 //通过it来遍历整个容器
31 while(it!=vp.end())
32 
33     it++;
34     it->print();
35 

 

以上是关于顺序容器(迭代器)--C++复习的主要内容,如果未能解决你的问题,请参考以下文章

手撸golang 行为型设计模式 迭代器模式

容器迭代器

怎么删除STL容器的元素

迭代器失效~转载

[C/C++]详解STL容器2--vector的功能和模拟实现(迭代器失效,memcpy拷贝问题)

C++ 迭代器