STL 關聯容器 之set 無重複有序集合

2021-07-26 10:42:18 字數 2015 閱讀 8855

參考資料:

std::setfirst;                           

int myints= ;

std::setsecond (myints,myints+5);        

std::setthird (second);                  

std::setfourth (second.begin(), second.end());  

struct classcomp

返回乙個二元組(pair)。成員 pair::first 被設定為指向新插入元素的迭代器或指向等值的已經存在的元素的迭代器。 

成員 pair::second 是乙個 bool 值,如果新的元素被插入,返回 true,如果等值元素已經存在(即無新元素插入),則返回 false。

ps:gcc版本需在4.8.0+,否則不支援

【emplace_hint】若指定元素的值是唯一的(當前容器中不存在該元素),則通過暗示可能的插入位置來插入該元素 myset.emplace_hint(iterator_position, value)

ps:position 中的值被用來作為對插入點的暗示。需要注意的是這僅僅只是乙個暗示, 而不會強制新的元素插入到某個位置。

新的元素仍然是按由容器中的比較物件指定的嚴格弱序規則插入到容器中的對應處置,

但是函式可以直接從暗示位置處開始搜尋插入點。如果 position 就是插入點,或者靠近插入點,將會很大程度上優化插入操作。

返回:如果當前函式成功插入乙個元素(即容器中還未存在值與將要插入的元素的值等價的元素),將會返回指向新插入元素的迭代器。

否則,返回指向容器中值與將要插入的元素的值等價的元素的迭代器。成員型別 iterator,是乙個指向元素的雙向迭代器型別(支援訪問,++, --操作)。

【equal_range】返回值匹配給定搜尋值的元素組成的範圍。pair::iterator,set::iterator> it; it = foo1.equal_range(6);

若集合中指定元素存在,則it->first指向該值, it->second指向該值的下乙個元素

若集合中指定元素不存在,則it->first,it->second首尾兩個迭代器都將指向按內部比較物件的排序規則排在 val 之後的第乙個元素

因為 set 容器中所有元素都是唯一的,所以返回的範圍中最多只有乙個元素。

返回二元組,二元組由兩個指向容器中元素的迭代器組成,第乙個迭代器與 set::lower_bound 傳入 val 返回的迭代器相同,第二個迭代器與 set::upper_bound 傳入 val 返回的迭代器相同。

【insert】 指定位置插入元素  

std::pair::iterator,bool> ret=myset.insert(value)  若存在該元素,ret.first指向set中存在的元素,ret.second為false;若存在,ret.second為true

myset.insert(iterator, value) 在指定位置插入元素,也只是個暗示位置

int myints= ; myset.insert (myints,myints+3); 插入陣列中指定範圍的元素

【empty】判斷set是否為空,空返回true,否則返回false  myset.empty()

【size】集合裡的實際包含的元素個數

【max_size】集合最大能容納的元素個數

【key_comp】返回容器中用來比較主鍵(key)的比較物件(comparison object)的乙份拷貝。

預設地,這是乙個 std::less 物件,類似操作符 operator<。

它以兩個元素的主鍵為引數,如果在按其定義的嚴格弱序排序規則排序的序列中,第乙個引數排在第二個引數前,返回 true,否則返回 false。

ps:std::set::key_compare mycomp = myset.key_comp(); mycomp(value1,value2)

【value_comp】 同key_comp

【swap】 交換兩個集合的元素 myset1.swap(myset2)

STL 關聯容器 之set 無重複有序集合

參考資料 參考資料 std setfirst int myints std setsecond myints,myints 5 std setthird second std setfourth second.begin second.end struct classcomp 返回乙個二元組 pai...

STL之關聯容器

1.set單重集合 不允許key重複 set作為乙個容器,也是用來儲存同一資料型別的資料型別,並且能從乙個資料集合中取出資料 c stl中標準關聯容器set,multiset,map,multimap內部採用的就是一種非常高效的平衡檢索二叉樹 紅黑樹 include using namespace ...

STL之關聯容器

關聯容器包含map set multimap multiset。關聯容器的特點是明顯的,相對於順序容器,有如下特點 1 其內部是採用非線性的二叉樹結構,具體的說是紅黑樹的結構原理實現的。2 set和map保證了元素的唯一性,multiset和multimap擴充套件了這一屬性,可以允許元素不唯一。3...