STL複習(6)之set與multiset容器

2021-10-19 10:06:41 字數 1488 閱讀 2070

1.set/multiset屬於關聯式容器,底層結構是用二叉樹實現,所有元素會在插入時自動被排序

2.set和multiset區別:

set不允許容器中有重複的元素

multiset允許容器中有重複的元素

3.構造和賦值

set st; //預設建構函式:

set(const set &st); //拷貝建構函式

set& operator=(const set &st); //過載等號操作符

4.大小和交換

size(); //返回容器中元素的數目

empty(); //判斷容器是否為空

swap(st); //交換兩個集合容器

5.插入和刪除

insert(elem); //在容器中插入元素

clear(); //清除所有元素

erase(pos); //刪除pos迭代器所指的元素,返回下乙個元素的迭代器

erase(beg, end); //刪除區間[beg,end)的所有元素 ,返回下乙個元素的迭代器

erase(elem); //刪除容器中值為elem的元素

6.set查詢和統計

find(key); //查詢key是否存在,若存在,返回該鍵的元素的迭代器;若不存在,返回set.end();

count(key); //統計key的元素個數

7.set和multiset區別

set不可以插入重複資料,而multiset可以

set插入資料的同時會返回插入結果,表示插入是否成功

multiset不會檢測資料,因此可以插入重複資料

8.pair對組建立

pairp ( value1, value2 );

pairp = make_pair( value1, value2 );

9.set容器排序

set容器預設排序規則為從小到大,掌握如何改變排序規則

利用仿函式,可以改變排序規則

10.測試

class

person

int m_age;

string m_name;};

class

cmp}

;class

cmp1};

void

printset

(set<

int>

&s)void

printmultiset

(multiset<

int>

&s)int

main()

摘自《黑馬》——c++提高程式設計

STL系列之六 set與hash set

stl系列之六 set與hash set set和hash set是stl中比較重要的容器,有必要對其進行深入了解。在stl中,set是以紅黑樹 rb tree 作為底層資料結構的,hash set是以hash table 雜湊表 作為底層資料結構的。set可以在時間複雜度為o logn 情況下插入...

STL系列之六 set與hash set

stl系列之六 set與hash set set和hash set是stl中比較重要的容器,有必要對其進行深入了解。在stl中,set是以紅黑樹 rb tree 作為底層資料結構的,hash set是以hash table 雜湊表 作為底層資料結構的。set可以在時間複雜度為o logn 情況下插入...

STL系列之六 set與hash set

stl系列之六 set與hash set set和hash set是stl中比較重要的容器,有必要對其進行深入了解。在stl中,set是以紅黑樹 rb tree 作為底層資料結構的,hash set是以hash table 雜湊表 作為底層資料結構的。set可以在時間複雜度為o logn 情況下插入...