前面我们初识了set容器,本节将会详细介绍set容器的迭代器,set容器迭代器和map容器、multimap容器一样都是双向迭代器,只能进行++或--操作,不能进行随机访问。同此,set容器有正向迭代器begin()、end(),有反向迭代器rbegin()、rend(),还有常量迭代器cbegin()、cend()、crbegin()、crend(),(c表示const,可读不可改)。由于set不能像map一样可以通过'[]'或at()成员函数来访问元素,所以遍历set容器大多使用迭代器。
下面然我们通过代码来学习set容器迭代器的使用方式:
#include<bits/stdc++.h>//万能头,以效率为中心 #include<string> #include<set>//包含头文件,养成好习惯 /*详解set容器迭代器*/ /*动态排序去重*/ using namespace std; void test() { set<int> s({1,2,3,4,5});//初始化列表 /*通过迭代器遍历set容器*/ cout << "通过迭代器遍历set容器: "; for(set<int>::iterator it = s.begin();it!=s.end();++it) cout << *it << " "; cout << '\n'; cout << "set容器里面总共有【" << s.size() << "】个元素\n"; cout << "通过迭代器输出第一个和最后一个元素:\n" ; cout << "最后一个元素为: " << *(--s.end()) << '\n'; cout << "第一个元素为: " << *s.begin() << '\n'; } int main(){ test(); return 0; }
代码编译结果如下:
总结:set容器可以通过begin()、rbegin()实现首尾元素访问,也能通过正反向迭代器实现容器内元素的正反向遍历,对于set容器来说主要是通过迭代器访问元素。
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程