前面初识set容器时我们就提到过set容器比map容器要简单一些,主要通过insert()或emplace()添加元素。当然我们还可以通过emplace_hint()带条件地为set容器添加元素,所以总体来说,我们有三种方法为map容器添加元素。下面我将通过代码分别演示这三种方法:
#include<bits/stdc++.h>//万能头,以效率为中心 #include<string> #include<set>//包含头文件,养成好习惯 /*为set容器插入元素*/ /*insert()、emplace_hint()、emplace()*/ using namespace std; void test() { set<int> s; /*insert*/ s.insert(0);//直接插入 s.insert(s.begin(),1) ;//带迭代器参数插入 set<int> s_t({6,7,8,9,10}); s.insert(++s_t.begin(),s_t.end()) ;//区间插入 s.insert({2,3,4,5});//多个插入 cout <<"set容器先后插入0、1、{6,7,8,9,10}、{2,3,4,5}后有元素:" ; for(auto it = s.begin();it!=s.end();++it)cout << *it << " "; cout << '\n'; cout << '\n'; s.clear();//清除元素,为emplace()测试做准备 /*emplace*/ s.emplace(0);//只能插入单个元素 cout <<"set容器插入0后有元素:" ; for(auto it = s.begin();it!=s.end();++it)cout << *it << " "; cout << '\n'; cout << '\n'; s.clear();//清除元素,为emplace_hint()测试做准备 /*emplace_hint()*/ /*有返回值,返回一个迭代器,插入成功则返回指向插入元素的迭代器;否则返回end()*/ auto hint = s.begin(); for(int i=0;i<5;++i) { hint = s.emplace_hint(hint,i+1); } cout <<"set容器插入1,2,3,4,5后有元素:" ; for(auto it = s.begin();it!=s.end();++it)cout << *it << " "; cout << '\n'; } int main(){ test(); return 0; }
代码编译结果如下:
以上就是3种为set容器插入元素的方法,多个插入只能用insert(),单个插入推荐使用emplace,emplace_hint()插入需要巧用迭代器,一般只有在批量添加元素时推荐。
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程