直接上代码:
#include<cstdio>
#include<set>
using namespace std;
int main(){
set<int> si;
//迭代器 只有vector和string支持 it+i的写法
si.insert(3);
si.insert(5);
si.insert(2);
si.insert(4);
si.insert(1);
//且不支持 it<si.end() 的写法
for(set<int>::iterator it=si.begin();it!=si.end();it++){
printf("%d ",*it);
}
printf("\n");
//find(x) 返回set中值为x的迭代器 迭代器与数据一一对应
set<int>::iterator it=si.find(2);
printf("%d\n",*it);
it=si.find(100); //此时迭代器到了si.end() 因为找不到所要查找的数据 打印出来的是set的size()
//加一个判断
printf("查找时加一个判断后 防止找不到\n");
if(it != si.end()){
printf("%d\n",*it);
}
else
printf("can not find the date\n");
printf("打印set大小\n");
printf("%d\n",si.size());
//erase() 删除一个元素或者是删除一个区间的元素
printf("删除一个元素3\n");
si.erase(si.find(3));
for(set<int>::iterator it=si.begin();it!=si.end();it++){
printf("%d ",*it);
}
printf("\n");
printf("删除一个元素1\n");
si.erase(1);
for(set<int>::iterator it=si.begin();it!=si.end();it++){
printf("%d ",*it);
}
printf("\n");
//删除从ii迭代器查找到的数据之后的所有数据 就是一只写到end() 左闭右开
printf("删除一个区间元素\n");
set<int>::iterator ii=si.find(4);
si.erase(ii,si.end());
for(set<int>::iterator it=si.begin();it != si.end();it++){
printf("%d ",*it);
}
//clear() 清空
printf("清空\n");
si.clear();
printf("%d",si.size());
return 0;
} 运行结果:

本文详细介绍了C++中set容器的基本操作,包括插入、查找、删除元素等,并通过实例展示了如何使用迭代器进行遍历及元素的增删。同时,文章还探讨了find方法的正确使用方式以及如何避免因查找不存在元素而引发的问题。
288

被折叠的 条评论
为什么被折叠?



