前面《初识STL库中deque容器》我们已经学会创建deque容器并且了解到很多deque的成员函数,本节将会详细讲解deque容器的迭代器。deque容器和vector容器一样,都有begin()、end();rbegin()、rend();cbegin()、crbegin()···下图为deque迭代器指向:

deque容器的迭代器指向

下面将通过代码向您展示如何通过迭代器访问deque内的元素:

#include<bits/stdc++.h>//万能头文件,竞赛推荐
#include<deque>//使用deque需要包含该头文件 
using namespace std;
void test()
{
/*创建 deque*/
cout << "开始遍历deque内元素: \n" ;
deque<int> dq{1,2,3,4,5};//初始化链表 
deque<int>::iterator beg = dq.begin() ;//迭代器方式创建变量 
auto end = dq.end();//auto关键字自动推导 
while(beg!=end)
{
cout << *beg++<< " " ;
}
} 
int main(){
    test();
    return 0;
}

当然,通过迭代器移动实现访问甚至是修改deque内元素不止上面这种方法,读者也可以通过end()后退都能够实现deque遍历。

不过,禁止通过迭代器访问或操作空容器元素,不然就会报错。

当deque需要进行”扩展操作“时会进行内存更换和数据转移,此时会更改迭代器指向,所以在容器进行“扩展”或“缩减”操作时需要更新迭代器指向。

点赞(0)

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

Dotcpp在线编译      (登录可减少运行等待时间)