一:介紹
set是STL的關聯式容器,以紅黑樹(Red-Black Tree)作為底層資料結構。自動去重,保證每個元素唯一,並對資料進行排序。
名稱空間為std,所屬標頭檔案為<set>
二:常用操作
容量:
a.set中實際資料的資料:set.size()
b.set中最大資料的數量:set.max_size()
c.判斷容器是否為空:set.empty()
修改:
a.插入資料:set.insert()
b.清空set元素:set.clear()
c.刪除指定元素:set.erase(it)
迭代器:
a.set開始指標:set.begin()
b.set尾部指標:set.end() 注:最後一個元素的下一個位置,類似為NULL,不是容器的最後一個元素
三:儲存
1 //簡單儲存 2 set<int> iSet; 3 for (int i=0; i<10; i++) 4 { 5 iSet.insert(rand()%100); 6 } 7 8 //儲存結構體 9 struct Student1 10 { 11 char name[32]; 12 int age; 13 bool operator<(const Student1& tmp) const{ 14 if(this->age < tmp.age) 15 return true; 16 return false; 17 } 18 }; 19 20 Student1 stu1; 21 strcpy(stu1.name, "woniu201"); 22 stu1.age = 32; 23 Student1 stu2; 24 strcpy(stu2.name, "beijing"); 25 stu2.age = 30; 26 27 set<Student1> sSet; 28 sSet.insert(stu1); 29 sSet.insert(stu2);
四:遍歷
1 for (set<int>::iterator it = iSet.begin(); it != iSet.end(); it++) 2 { 3 cout << *it << endl; 4 }
五:查詢
1 set<int>::iterator it = find(iSet.begin(), iSet.end(), 24); 2 if (it != iSet.end()) 3 { 4 cout << "found" << endl; 5 } 6 else 7 { 8 cout << "not found" << endl; 9 }
六:刪除
1 for (set<int>::iterator it = iSet.begin(); it != iSet.end(); it++) 2 { 3 if (*it == 24) 4 { 5 it = iSet.erase(it); 6 it--; 7 } 8 }
掃碼關注公眾號
專注分享Java,C/C++,STL,Spring框架,mybatis框架,mysql,redis,分散式,高併發,設計模式,爬蟲,docker,shell程式設計等相關技術,在這裡一起探討,一起學習,一起進步,不定期分享視訊書籍資源,充分利用碎片化時間,讓我們的技術之路更加有樂趣。