按需求抓重點。收藏起來
最後一次更新與3月2日
vector容器
所有元素都會根據元素的鍵值自動排序,set元素的鍵值就是實值,實值就是鍵值。set不允許兩個元素有相同的鍵值。(set的元素不像map那樣可以同時擁有實值(value)和鍵值(key))。(來自)換而言之,就是一種集合,這個容器裡面不會出現重複的元素,而且自動給你排序。排序從小到大。
如果不追求更多使用方法,只是簡單了解,請閱讀下面的**和總結。
注:其中迭代器的用法可跳轉《stl加餐–迭代器的使用(初階)–持續更新》
#include
#include
using
namespace std;
intmain()
// 遍歷set
set<
int>
:: iterator it ;
//申請乙個set的迭代器
for(it = s.
begin()
;it != s.
end();
++it)
cout<<
"s.size() = "
/輸出set的大小
//再次加入元素1 2 3 4 5
for(
int i =
1;i<=
5;i++)
cout<<
"s.size() = "
/再次輸入大小
return0;
}
執行結果
123
45s.size()
=5s.size()
=5
小解讀由上面**我們可以看到set的兩個功能:
1.set是乙個無重複元素的集合,也就是會自動去除重複的元素。set的複雜度要比vector小,沒有那麼多的構造賦值什麼的,所以直接將函式即可。2.set可以自動為我們排序,預設排序為公升序。(高階的排序這裡不做講解)
函式如下。
insert() 加入元素(插入元素)小總結:size() 返回當前set容器中的元素個數
begin() 返回set容器的第乙個元素
end() 返回set容器的最後乙個元素
clear() 刪除set容器中的所有的元素
empty() 判斷set容器是否為空
count() 用來查詢set中某個鍵值出現的次數
erase() 刪除元素
1.set加入元素不像vector一樣可以像使用陣列一樣加入元素,最方便利用insert插入元素。
2.begin()和end()的用法和vector差不多,但是注意set裡面的begin()和end()不支援『+'和 『-』運算子(自增自減可以),申請的迭代器也不行,也就數說,出現下面**會報錯。
s.
begin()
+1;s.
begin()
-1;s.
end()-
1;set<
int>
:: iterator ite = s.
begin()
+2;ite = ite +2;
...等等相關操作
簡單函式在原始****現過,所以不做過多講解。
count()函式會返回某個鍵值(就是元素)出現的次數,由於set的去重特定,如果有某個元素,就只會返回1,如果沒有,返回0。詳情看**(省略標頭檔案)。
s.
insert(1
);s.insert(2
);s.insert(4
);s.insert(3
);s.insert(1
);//重複插入1
cout<<
"s.count(1) = "
)/檢視1出現的次數
cout<<
"s.count(0) = "
)/檢視0出現的次數
執行結果
1
0
erase()的三種常用原形
1.erase(iterator) ,刪除定位器iterator指向的值(刪除這個位址的元素)
2.erase(first,second),刪除定位器first和second之間的值(刪除位址從first到second的元素(注意不包括second位址的元素))
3.erase(key_value),刪除鍵值key_value的值()具體適用方法請看**
set<
int> s;
//加入元素10 9 8 7 6 5 4 3 2 1
for(
int i =
10;i>=
1;i--
)//申請乙個迭代器
set<
int>
:: iterator it;
//第一種刪除
s.erase
(s.begin()
);//刪除第乙個元素 1;
cout<<
"第一次刪除的結果為:"
;for
(it = s.
begin()
; it != s.
end();
++it)
cout/第二種刪除
s.erase
(s.begin()
,++s.
begin()
);//在上面刪除的基礎上刪去元素 2(因為不包括位址++s.begin()的元素,所有只能刪掉乙個元素)
cout<<
"第二次刪除的結果為:"
;fprintf
("text.txt",)
for(it = s.
begin()
; it != s.
end();
++it)
cout/第三種刪除
s.erase(5
);//刪除集合裡的 5
cout<<
"第三次刪除的結果為:"
;for
(it = s.
begin()
; it != s.
end();
++it)
cout<
第一次刪除的結果為:234
5678
910第二次刪除的結果為:345
6789
10第三次刪除的結果為:346
78910
持續更新…(如有問題歡迎指正) STL2 順序容器
操作 1.swap c1,c2 或c1.swap c2 交換c1和c2中元素,c1和c2型別必須相同,它比c2向c1拷貝元素快得多。2.seq.assign b,e 將seq中的元素替換為迭代器b和e表示範圍內的元素。seq.assign n,t 將seq中的元素替換為n個t。assign操作不適合...
王小明學STL2
大叔!你騙我。王小明找上了大叔,憤憤不平。我怎麼騙你了?大叔正無聊地翻著一本早被翻爛的書。你騙我用stl,我去網上查了,很多人都說stl慢!慢的很 你是怎麼知道他慢的?你昨天不是教我用vector嗎?我回去用陣列和它比較了一下,發現比陣列插入的速度慢了好多!你是怎麼試驗的?你看,我是這樣寫的。說著,...
stl 2 初始容器迭代器演算法
include std cout std endl 螢幕輸出需要的標頭檔案 include vector容器和vector迭代器需要的標頭檔案 include for each演算法需要的標頭檔案 宣告乙個for each演算法需要用到的 函式 void myprint int v int main...