C++ STL之set的基本操作


set是集合,雖然也存在鍵值和實值,不過兩者根本就是同一個值,鍵值的設置完全就是為了滿足紅黑樹的底層結構,set操作與map很像不過也有些不同。

1、 set迭代器與map的不同:

(1)set使用接引用運算符*取值,而map使用first和second取值。

(2)set的迭代器都是常量迭代器,不能用來修改所指向的元素,而map的迭代器是可以修改所指向元素的。

2、set沒有重載[]運算符,而map中重載了,因為直接使用[]改變元素值會打亂原本正確的順序,要改變元素值必須先刪除舊元素,則插入新元素

3、構造的類型不一樣,如同樣實值為int類型分別為set<int>和map<type,int>(其中type可以為任意類型)

其他如插入、刪除、查找等操作與map幾乎一樣

 1 #include<iostream>
 2 #include<set>
 3 using namespace std;
 4 void print(set<int>set_int)
 5 {
 6     set<int>::iterator it=set_int.begin();
 7     for(;it!=set_int.end();it++)
 8     {
 9         cout<<*it<<' ';
10     }
11     cout<<endl;
12 
13 }
14 int main()
15 {
16     int num[4]={1,2,3,4};
17     set<int> set_int(num,num+4);
18 
19     //元素插入:
20     //1,插入value,返回pair配對對象,可以根據.second判斷是否插入成功。(提示:value不能與set容器內元素重復)
21     //pair<iterator, bool> insert(value)
22     //2,在pos位置之前插入value,返回新元素位置,但不一定能插入成功
23     //iterator insert(&pos, value)
24     //3,將迭代區間[&first, &last)內所有的元素,插入到set容器
25     //void insert[&first, &last)
26     set_int.insert(5);
27     print(set_int);
28     set_int.insert(5);
29     print(set_int);
30 
31     //元素刪除
32    //1,size_type erase(value) 移除set容器內元素值為value的所有元素,返回移除的元素個數
33    //2,void erase(&pos) 移除pos位置上的元素,無返回值
34    //3,void erase(&first, &last) 移除迭代區間[&first, &last)內的元素,無返回值
35    //4,void clear(), 移除set容器內所有元素
36     set_int.erase(3);
37     print(set_int);
38 
39     //元素查找
40     //count(value)返回set對象內元素值為value的元素個數
41     //iterator find(value)返回value所在位置,找不到value將返回end()
42     //lower_bound(value),upper_bound(value), equal_range(value) 
43     set<int>::iterator it;
44     it=set_int.find(5);
45     cout<<*it<<endl;
46     return 0;
47 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM