關於STL中set容器的一些總結

2022-10-04 04:51:10 字數 1773 閱讀 3014

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...