標籤(空格分隔): c++stl
關聯式容器是關聯式陣列概念的推廣
- 依據特定的排序規則,自動為其元素排序
- 由二叉樹實現
- 提供對元素的快速訪問
主要的有序關聯式容器有:
- set:關鍵字和資料檔案是同乙個值。具有唯一性
- multiset:類似,但是包含重複的元素
- map: 成對資料的容器。鍵值對,唯一性
- multimap:類似,可以重複
無序關聯容器:
- unordered_map:
- unordered_multimap
- unordered_set
- unordered_multiset
宣告:
template key,class traits=less,class allocator= allocator > class
set;
說明一下排序規則:
- 反對稱的:xy
為假
- 可傳遞的:x
,less
函式物件模板,定義在functional
標頭檔案中
自定義排序規則:
std::set
> s1;//第一種方法
sets2(less()); //第二種方式
初始化:
set
s;set
s1(s);
set s = //初始化列表的方法
等等
賦值:
- emplace 就地構造元素
- insert 插入乙個元素
刪除:
- erase 刪除元素
- clear 刪除全部內容
- swap 交換內容
key_compare key_comp()const;
key_compare value_comp() const;
key_compare 決定集合中的排列順序。
使用方法:
set
s;set
::key_compare func = s.key_comp();
例子:
#include
template
void printsetvalue( set
s)int main()
; set
::iterator iter;
pair::iterator, set
::iterator> p;
cout
<< "--------insert---------"
<< endl;
s.insert("wa_ha_ha");
s.insert("ma_ma_ma");
printsetvalue(s) ;
cout
<< "---------equal_range--------"
<< endl;
p = s.equal_range("dat");
cout
<< "不小於的第乙個值:"
<< *p.first<< endl;
cout
<< "大於的第乙個值:"
<< *p.second << endl;
cout
<< "---------lower_bound 和upper_bound --------"
<< endl;
iter = s.lower_bound("dat");
cout
<< "不小於的第乙個值:"
<< *iter<< endl;
iter = s.upper_bound("dat");
cout
<< "大於的第乙個值:"
<< *iter << endl;
}
輸出為:
---
----
-insert--
----
---set:
abdbar
cardat
dela
fore
ma_ma_ma
male
wa_ha_ha--
----
---equal_range--
----
--不小於的第乙個值:dat
大於的第乙個值:dela--
----
---lower_bound
和upper_bound--
----
--不小於的第乙個值:dat
大於的第乙個值:dela
兩個型別基本一致。
建構函式:
建構函式
備註map c / multimap c
產生乙個空的map或者multimap
map c(op) /multimap c(op)
產生乙個以op為準則,空的map/multimap
map c1(c) / multimap c2(c)
產生c 的副本
map c(beg,end) / multimap c(beg,end)
用迭代器範圍產生乙個新map/multimap
map c(beg,end,op) / multimap c(beg,end,op)
以op為排序規則,用迭代器產生
排序形式:
map效果
map
/multimap
以less()為排序準則
map
/multimap
以op為準則
元素的訪問:
- at() (c++11):不存在,返回out_of_range 異常
- operator[k]:若k不存在,則新增關鍵字k,並且初始化
容量:
- empty
- size
- max_size
賦值:
- emplace
- insert
刪除:
- clear
- erase
- swap
C 容器(三)關聯容器
set,multiset,map,multimap 是一種非線性的樹結構,具體的說採用的是一種比較高效的特殊的平衡檢索二叉樹 紅黑樹結構。因為關聯容器的這四種容器類都使用同一原理,所以他們核心的演算法是一致的,但是它們在應用上又有一些差別,先描述一下它們之間的差別。1 set 又稱集合,實際上就是一...
有序關聯容器
關聯容器 類a沒有 操作符 bool compare const a a1,const a a2 set a,decltype compare book compare pair author map word count string word while cin word word count ...
關聯式容器
關聯式容器是用來儲存資料的,與序列式容器不同的是,其儲存的是結構的鍵值對,在資料檢索時比序列式容器效率更高。鍵值對 用來表示具有一一對應關係的結構,該結構中一般只含兩個成員變數key和value,key代表鍵值,value表示與key對應的資訊。比如 現在要建立乙個英漢互譯的字典,那該字典中必然有英...