set是集合,雖然也存在鍵值和實值,不過兩者根本就是同乙個值,鍵值的設定完全就是為了滿足紅黑樹的底層結構,set操作與map很像不過也有些不同。
1、 set迭代器與map的不同:
(1)set使用接引用運算子*取值,而map使用first和second取值。
(2)set的迭代器都是常量迭代器,不能用來修改所指向的元素,而map的迭代器是可以修改所指向元素的。
2、set沒有過載運算子,而map中過載了,因為直接使用改變元素值會打亂原本正確的順序,要改變元素值必須先刪除舊元素,則插入新元素
3、構造的型別不一樣,如同樣實值為int型別分別為set和map(其中type可以為任意型別)
其他如插入、刪除、查詢等操作與map幾乎一樣
1 #include2 #include3using
namespace
std;
4void print(set
set_int)
511 cout<
1213}14
intmain()15;
17set
set_int(num,num+4
);18
19//
元素插入:
20//
21//
pairinsert(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);
3031
//元素刪除
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);
3839
//元素查詢
40//
count(value)返回set物件內元素值為value的元素個數
41//
iterator find(value)返回value所在位置,找不到value將返回end()
42//
lower_bound(value),upper_bound(value), equal_range(value)
43set
::iterator it;
44 it=set_int.find(5
);45 cout<
46return0;
47 }
STL 中set的用法
set set2 set1 建立set1的副本set2,set2與set1必須有相同的鍵型別和值型別 set set3 b,e 建立set型別的物件set3,儲存迭代器b和e標記的範圍內所有元素的副本。元素的型別必須能轉換為k型別 lower bound 返回指向大於或等於某值的第乙個元素的迭代器 ...
STL之set的用法
1.關於set 首先,set是關聯容器,set作為乙個容器是用來儲存同一種資料型別的資料結構,基本功能與陣列相似。不同的是,在set中每個元素的值都是唯一的。而且系統能夠根據元素的值自動進行排序。但是set中數元素的值並不能直接被改變。除了set,stl中還有一些標準關聯容器multiset map...
Set的基本用法
參考 阮一峰 es6入門之set es6 提供了新的資料結構 set。它類似於陣列,但是成員的值都是唯一的,沒有重複的值。const s new set 2,3,5,4,5,2,2 foreach x s.add x set結構不會新增重複的值 for let i of s 初始化 例一 可以接受乙...