直接上代码:
#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;
}
运行结果: