關連式容器內部的元素都是排好序的,有以下四種
set:排好序的集合,不允許有相同的元素
multiset:排好序的集合,允許有相同元素
map:每個元素都分爲關鍵字和值兩部分,容器中的元素是按關鍵字排序的,不允許有多個元素的關鍵字相同
multimap:和map類似,差別在於元素的關鍵字可以相同
不能修改set或multiset容器中元素的值,因爲元素被修改後,容器並不會自動重新調整順序,於是容器中的有序性就會被破壞,在在其上進行查找等操作就會得到錯誤的結果。因此,如果要修改set或multiset容器中某個元素的值,正確的做法是先刪除該元素,再插入新元素。
同理,也不能修改map和multimap容器中的關鍵字
關聯容器內部的元素或關鍵字之間比較大小可以用 <
運算符,也可以用自定義的比較器。因爲有序,所以在關聯容器上進行查找的速度較快。
使用關聯容器的目的也就在於快速查找。當一個元素被插入關聯容器時,該元素會和已有的元素進行比較,最終被插入一個合適的位置。
關聯容器一般是用平衡二叉樹實現的。
除了所有容器共有的成員函數外,關聯容器還具有以下成員函數:
- find:查找某個值。
- lower_bound:查找某個下界。
- upper_bound:查找某個上界。
- equal_range:同時查找上界和下界。
- count:計算等於某個值的元素個數。
- insert:插人一個元素或一個區間。