STL set常见方法详解
STL中的容器set也是非常的重要啊,它的常用方法有哪些呢?请看以下代码分解!嘿嘿
#include<iostream>
#include<string>
#include<set>
using namespace std;
int main() {
//本讲主要对C++STL中set的主要方法进行讲解
//set是C++自带的容器库,它具有两个特点:
//1.集合的元素都是排好序的
//2.set中没有重复的元素
//集合初始化
set<int>s;
//使用insert方法插入元素,并验证其有序性和不重复性
for (int i = 0; i < 6; i++) {
s.insert(i);//插入元素
}
s.insert(2);
s.insert(3);//插入集合中已有的两个数,观察输出结果可知集合符合元素唯一性且按照升序排序
set<int>::iterator iter1 = s.begin();
for (; iter1 != s.end(); iter1++) {
cout << *iter1 << " "; //输出集合中的元素序列
}
cout << endl;
//利用size方法获得集合元素个数
int num1 = s.size();
cout << "集合中元素个数为" << num1 << endl;
//用max_size方法获得集合中元素的最大个数
int num2 = s.max_size();
cout << "集合中元素的最大个数为:" << num2 << endl;
//用erase方法删除迭代器指针it的值
set<int>::iterator iter2 = s.begin();
for (int i = 0; i < 2; i++){ //将迭代器向后移两位,即指向元素3;
iter2++;
}
s.erase(iter2);//删除iter2指向的元素,这里指的是元素2
set<int>::iterator iter3 = s.begin();
for (; iter3 != s.end(); iter3++) {
cout << *iter3 << " "; //输出删除元素后的序列以验证是否删除成功
}
cout << endl;
//利用find 方法查找集合中的元素
set<int>::iterator iter4,iter5;
iter4 = s.find(1);
if (iter4 != s.end()) { //判断元素1是否存在集合中
cout << "元素1存在set中!" << endl;
}
else {
cout << "元素1不存在于set中!" << endl;
}
iter5 = s.find(2);//判断元素2是否还在集合中
if (iter5==s.end()) {
cout << "元素2不在集合中!" << endl;
}
//利用empty方法判断该集合是否非空
set<int>s1;//重新实例化以对比说明
bool judge1 = s.empty();
bool judge2 = s1.empty();
if (judge1) { //s集合为空
cout << "s集合为空!" << endl;
}
else {
cout << "s集合不为空,且有" << s.size() << "个元素" << endl;
}
if (judge2) { //集合s1为空
cout << "s1集合为空!" << endl;
}
else {
cout << "s1集合不为空,且元素个数为:" << s1.size() << endl;
}
//利用反向迭代器输出集合序列
set<int>::iterator iter6 = s.cbegin();
for (; iter6 != s.cend(); iter6++) {
cout << *iter6 << " ";
}
cout << endl;
//利用swap函数实现两个集合的交换
cout << "交换前s中元素个数为:" << s.size() << endl;
cout << "交换前s1中元素个数为:" << s1.size() << endl;
s.swap(s1);
int num3 = s.size();
int num4 = s1.size();
cout << "交换后两个集合中的元素分别为:" << endl;
cout << "s集合中的元素为:" << num3 << endl;
cout << "s1集合中的元素个数为:" << num4 << endl;
//观察以上结果可知交换后,s和s1中元素全部交换
//值得注意的是,这种交换是仅针对地址的交换,实际内容并么有交换
//这就是高效的C++啊!!!
//由于交换,s中元素个数变为0;因此利用clear方法对s1集合元素进行清空
s1.clear();
if (s1.size() == 0) {
cout << "s1中的元素已经被清空!" << endl;
}
else {
cout << "s1中元素没有被清空,出现错误!" << endl;
}
//恭喜你完成本小节的学习!祝贺你掌握了使用基本的set方法!
//未来加油!!!
return 0;
}
运行结果如下图所示:
冲!