C++筆記之set使用
阿新 • • 發佈:2018-12-13
set有元素唯一性,自動排序。
1.常用操作
插入:se.insert(5);
訪問:只能通過迭代器,*it
查詢:it=se.find(3),返回元素對應的迭代器,若未找到,返回se.end()
刪除:se.erase(4),刪除值為5的元素; se.erase(it),刪除迭代器指定的元素。
判空:se.empty(),若為空,返回1;若不空,返回0.
清空:se.clear().
2.成員函式列表
1. begin()--返回指向第一個元素的迭代器
2. clear()--清除所有元素
3. count()--返回某個值元素的個數
4. empty()--如果集合為空,返回true
5. end()--返回指向最後一個元素的迭代器
6. equal_range()--返回集合中與給定值相等的上下限的兩個迭代器
7. erase()--刪除集合中的元素
8. find()--返回一個指向被查詢到元素的迭代器
9. get_allocator()--返回集合的分配器
10. insert()--在集合中插入元素
11. lower_bound()--返回指向大於(或等於)某值的第一個元素的迭代器
12. key_comp()--返回一個用於元素間值比較的函式
13. max_size()--返回集合能容納的元素的最大限值
14. rbegin()--返回指向集合中最後一個元素的反向迭代器
15. rend()--返回指向集合中第一個元素的反向迭代器
16. size()--集合中元素的數目
17. swap()--交換兩個集合變數
18. upper_bound()--返回大於某個值元素的迭代器
19. value_comp()--返回一個用於比較元素間的值的函式
3 程式碼示例
#include<iostream> #include<set> using namespace std; int main(){ //1.元素型別為int int a[5]={1,0,3,2,4}; set<int> se1(a,a+5); //插入 se1.insert(5); se1.insert(2);//無法插入已有的值 //輸出 cout<<"元素個數為:"<<se1.size()<<endl; set<int>::iterator it1; for(it1=se1.begin();it1!=se1.end();it1++) cout<<*it1<<' '; cout<<endl<<endl; //訪問 // cout<<se1[2]<<endl;//不可行 it1=se1.begin(); cout<<*it1<<endl; cout<<endl; //查詢 it1=se1.find(3); if(it1!=se1.end()) cout<<"找到元素3"<<endl; cout<<endl; //刪除 se1.erase(4); it1=se1.begin(); se1.erase(it1); cout<<"元素個數為:"<<se1.size()<<endl; for(it1=se1.begin();it1!=se1.end();it1++) cout<<*it1<<' '; cout<<endl<<endl; //判空、清空 cout<<"set空嗎:"<<se1.empty()<<endl; se1.clear(); cout<<"set空嗎:"<<se1.empty()<<endl; /*---------------------------------------------------------------------------*/ cout<<endl<<"=================================================================="<<endl<<endl; /*---------------------------------------------------------------------------*/ //2.元素型別為string //string a[5]={"aaa","bbb","ccc","ddd","eee"}; //set<string> sset(a,a+5); set<string> sset; //插入 sset.insert("cbc"); sset.insert("cac"); sset.insert("aaa"); sset.insert("bbb"); sset.insert("ddd"); sset.insert("fff"); sset.insert("bbb");//無法插入已有的值 //輸出 cout<<"元素個數為:"<<sset.size()<<endl; set<string>::iterator it2; for(it2=sset.begin();it2!=sset.end();it2++) cout<<*it2<<' '; cout<<endl<<endl; //訪問 it2=sset.begin(); cout<<*it2<<endl; cout<<endl; //查詢 it2=sset.find("ccc"); if(it2!=sset.end()) cout<<"找到元素ccc"<<endl; else cout<<"未找到ccc"<<endl; cout<<endl; //刪除 sset.erase("ddd"); it2=sset.begin(); sset.erase(it2); cout<<"元素個數為:"<<sset.size()<<endl; for(it2=sset.begin();it2!=sset.end();it2++) cout<<*it2<<' '; cout<<endl<<endl; //判空、清空 cout<<"set空嗎:"<<sset.empty()<<endl; sset.clear(); cout<<"set空嗎:"<<sset.empty()<<endl; return 0; }
執行結果:
參考