1.關於set
www.cppcns.comist等方便的容器,更重要的是stl封裝了許多複雜的資料結構演算法和大量常用資料結構操作。vector封裝陣列,list封裝了鍊錶,map和set封裝了二叉樹等,在封裝這些資料結構的時候,stl按照程式設計師的使用習慣,以成員函式方式提供的常用操作,如:插入、排序、刪除、查詢等。讓使用者在stl使用過程中,並不會感到陌生。
關於set有下面幾個問題:
oeemivw等演算法在一起使用的時候,牢記這個原則:不要使用過期的iterator。
2.set中常用的方法
複製** **如下:
#include
#include
cout
}執行結果:
小結:插入3之後雖然插入了乙個1,但是我們發現set中最後乙個值仍然是3哈,這就是set 。還要注意begin() 和 end()函式是不檢查set是否為空的,使用前最好使用empty()檢驗一下set是否為空.
複製** **如下:
#include
#include
執行結果:
複製** **如下:
#include
#include
for(iter = s.begin() ; iter != s.end() ; ++iter)
cout pr;
pr = s.equal_range(3);
cout
}執行結果:
複製** **如下:
#include
#include
//第一種刪除
s.erase(s.begin());
//第二種刪除
first = s.begin();
second = s.begin();
second++;
second++;
s.erase(first,second);
//第三種刪除
s.erase(8);
cout
cout
}執行結果:
小結:set中的刪除操作是不進行任何的錯誤檢查的,比如定位器的是否合法等等,所以用的時候自己一定要注意。
複製** **如下:
#include
#include
; set s(a,a+3);
set::iterator iter;
if((iter = s.find(2)) != s.end())
return 0;
}insert(key_value); 將key_value插入到set中 ,返回值是pair::iterator,bool>,bool標誌著插入是否成功,而iterator代表插入的位置,若key_value已經在set中,則iterator表示的key_value在set中的位置。
複製** **如下:
#include
#include
; set s;
set::iterator iter;
s.insert(a,a+3);
for(iter = s.begin() ; iter != s.end() ; ++iter)
cout pr;
pr = s.insert(5);
if(pr.second)
return 0;
}執行結果:
複製** **如下:
#include
#include
執行結果:
本文標題: 關於stl中set容器的一些總結
本文位址:
stl一些容器
deque a deque deque n,elem n個elem初始化的deque deque beg,end 雙指標初始化 v.push front 取出第乙個元素 棧,先進後出。通過top 方法返回棧頂元素,push 壓棧,pop 出棧。效率很高,不能遍歷,不支援隨機訪問。q.front q....
關於stl中關聯容器的一些基礎東西
最近發現自己日常工作中雖然用c 編碼,但是沒咋用stl的東西,所以就開始補充這方面的知識 1.宣告set容器裝的資料型別時可以順便定義比較函式方法。如 普通的宣告set容器裝型別的方式 setss 宣告set容器時還定義比較方法 ps 寫比較函式時注意相等比較要返回false 要寫成結構體物件方式,...
set容器的一些用法
set集合容器 實現了紅黑樹的平衡二叉檢索樹的資料結構,插入元素時,它會自動調整二叉樹的排列,把元素放到適當的位置,以保證每個子樹根節點鍵值大於左子樹所有節點的鍵值,小於右子樹所有節點的鍵值 另外,還得保證根節點左子樹的高度與右子樹高度相等。平衡二叉檢索樹使用中序遍歷演算法,檢索效率高於vector...