c STL容器(2)set容器

2021-10-24 14:09:17 字數 2874 閱讀 9227

set翻譯為集合,是乙個內部自動有序且不含重複元素的容器

set的定義

set<

typename

> name;

set<

int> vi;

set<

double

> vi;

set<

char

> vi;

set vi;

//node可以是結構體

set<

int> a[

100]

;//陣列裡面每個元素都是乙個set集合

insert(x) 將x插入set容器中,並自動遞增排序和去重

//insert(x) 將x插入set容器中,並自動遞增排序和去重

st.insert(4

);st.

insert(3

);st.

insert(1

);st.

insert(2

);//不支援for

(set<

int>

::iterator it=st.

begin()

;it!=st.

end(

);it++

)

set集合的遍歷

set只能通過迭代器遍歷

除了vector和string之外的stl容器都不支援*(it+i)的訪問方式

//不支援for

(set<

int>

::iterator it=st.

begin()

;it!=st.

end(

);it++

)

set內的元素會自動遞增排序,且自動去除了重複元素

find(value)返回set中對應值為value的迭代器

set<

int>

::iterator it=st.

find(3

);//查詢值為3的元素返回其迭代器

cout<<

*it

erase()刪除元素

//erase() 有兩種用法一種是刪除單個元素另一種是刪除乙個區間的所有元素

//刪除單個的方法又有兩種

it為所刪元素的迭代器 可以和find連用

//1 2 3 4

st.erase

(st.

find(3

));for

(set<

int>

::iterator it=st.

begin()

;it!=st.

end(

);it++

) cout< value為所刪除元素的值

//1 2 4

st.erase(1

);for(set<

int>

::iterator it=st.

begin()

;it!=st.

end(

);it++

) cout

insert(4

);st.

insert(3

);st.

insert(1

);st.

insert(2

);//刪除整個區間

//1 2 3 4

st.erase

(st.

find(2

),st.

end())

;for

(set<

int>

::iterator it=st.

begin()

;it!=st.

end(

);it++

)

size()返回set內的元素個數

//1 2 3 4

cout

;//4

clear()清空st中的所有元素

st.

clear()

; cout

;

empty() 判斷是否為空

st.

clear()

; cout

lower_bound(k)

upper_bound(k)

st.

insert(4

);st.

insert(3

);st.

insert(1

);st.

insert(2

);//1 2 3 4

//lower_bound(k) 返回乙個迭代器,指向鍵值不小於k的第乙個元素

set<

int>

::iterator it=st.

lower_bound(2

);//尋找第乙個大於等於2的數

cout<<

*it

it=st.

upper_bound(2

); cout<<

*it

初級總結 容器2 Set介面

介紹完了list介面,我們來看看set介面。set介面 內部不可重複。set介面有兩個重要的實現類 hashset和treeset。hashset屬於無序,雜湊存放,需要重寫equals和hashcode方法 hashcode相等,equals 內容 不一定相等 equals 內容 相等,hashc...

C 知識點 STL容器2 set

set可能算是一種比較冷門的stl容器了,喜歡用它的人覺得set真牛逼 不喜歡它的人覺得set真垃圾 很不幸,我屬於第一種 set作為一種封裝好的資料容器 最吸引人的地方是它的自動排序功能 這也就是說你可以擁有乙個實時的排好序的序列 或者可以用乙個序列同時實現大根堆和小根堆 時間複雜度和空間都是兩者...

C STL之Set集合容器

set集合容器實現了紅黑樹的平衡二叉樹的資料結構,在插入元素時候,它會自動的進行調整二叉樹的排列,把該元素放到適當的位置,以保證每個子樹根節點的鍵值大於左子樹所有的鍵值,小於右子樹所有節點的鍵值 另外,還要確保根節點左子樹的高度與右子樹的高度相等,這樣,二叉樹的高度最小,從而達到檢索的速度最快 注意...