关联容器(Associative Containers ):关联容器中的元素没有严格线性关系,所以其中的元素没有首元素和末元素的区别。
1. 有序关联容器
set, map, multiset, multimap
1.1. 严格弱序关系
- 非自反:!(x<x)
- 非对称:x < y ==> !(y< x)
- 传递性: x < y && y < z ==> x < z
- 不可比的传递性: x =y && y=z ==> x = z
1.2. 关联容器的特点
sort和关联容器必须使用定义了严格弱序关系的类型,否则会导致未定义行为(死循环)。
但有些类型(如复数)定义严格弱序会比较奇怪。
增、删、查的时间复杂度为O(nlogn)
2. 无序关联容器(c++11)
unordered_set, unordered_map, unordered_multiset, unordered_multi_map
默认使用hash实现。