前面我们初识了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迭代器学习

总结:set容器可以通过begin()、rbegin()实现首尾元素访问,也能通过正反向迭代器实现容器内元素的正反向遍历,对于set容器来说主要是通过迭代器访问元素。


点赞(0)

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

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

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

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

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

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

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

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

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