Efftive STL 關聯容器

2022-09-08 18:09:14 字數 846 閱讀 5610

find方法的「相同」的定義是相等,是以operator

==為基礎的,

set::insert的「相同」的定時則是等價,是以operator

<

(less)為基礎的,即

if(!(v1 < v2) and !(v2 < v1))

關聯容器的等價即為:

!(c.key_comp()(x,y)) and (!(c.key_comp()(y,x)))

舉個例子: 

//compare 型別

內部仿函式不區分大小寫比較

setciss;

ciss.insert("person");//succ

ciss.insert("person"); //fail,不會被插入ciss

if(ciss.find(「person」) != ciss.end())

if(find(ciss.begin(),ciss.end(),"person") != ciss.end())

優先使用關聯容器自己的比較函式(一般都是less函式)

struct stringptrless

}using stringptrset = set;

stringptrset ss;

using iter = stringptrset::const_iterator;

for(iter i = ss.begin(); i != ss.end(); i++)

容器 順序容器 關聯容器

容器分為 順序容器 關聯容器,示意圖如下 順序容器 只儲存值,關聯容器 key value形式,關聯容器的乙個元素包含兩個部分 鍵值對 key value 有序容器 底層實現為紅黑樹,即容器內的key是有序的 無序容器 底層實現為hash table,雜湊表 區別 順序容器通過元素在容器中的位置順序...

STL 關聯容器

1 關聯容器與順序容器的本質區別 關聯容器通過鍵 key 儲存和讀取元素,而順序容器則通過元素在容器中的位置順序儲存和訪問元素。2 關聯容器的型別 map set multimap multiset 3 pair型別 pair型別的比較 p1 p1 p2 如果兩個pair物件的first和secon...

c 關聯容器

1.map建構函式 mapm 普通初始化 mapm m2 複製初始化法 mapm b,e 另乙個map物件的迭代器初始化法 注意 1 鍵值型別必須定義 操作符號,資料訪問時需要呼叫。2 m aaa 下表訪問方式導致的結果是,若鍵對應的值不存在,則插入該鍵值對應的預設值。2.map插入操作 m.ins...