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