1.关联容器:
1.支持通过键来高效地查找和读取元素。
2.两个基本的关联容器类型是 map set。
2.pair 类型:
1.pair<T1, T2> p1; 创建一个空的 pair 对象,它的两个元素分别是 T1 和 T2类型。
2.pair<T1, T2> p1(v1, v2); 创建一个 pair 对象,它的两个元素分别是 T1 和 T2 ,其中 first 成员初始化为 v1,而 second 成员初始化为 v2。
3.make_pair(v1, v2); 以 v1 和 v2 值创建一个新 pair 对象,其元素类型分别是v1 和 v2 的类型。
4.p1 < p2; 两个 pair 对象之间的小于运算,其定义遵循字典次序:如果 p1.first < p2.first 或者 !(p2.first < p1.first) &&p1.second < p2.second,则返回 true。
5.p1 == p2;如果两个 pair 对象的 first 和 second 成员依次相等,则这两个对象相等。该运算使用其元素的 == 操作符。
6.p.first 返回 p 中名为 first 的(公有)数据成员。
7.p.second 返回 p 的名为 second 的(公有)数据成员。
3.关联容器不提供front、 push_front、 pop_front、back、push_back 以及 pop_back 操作。
4.map 的构造函数:
1.map<k, v> m;
2.map<k, v> m(m2);
3.map<k, v> m(b, e);
5.键类型的约束:
作为键的类型,必须提供逻辑运算<的操作。(严格弱排序)
6.map 类定义的类型:
1.map<K, V>::key_type 在 map 容器中,用做索引的键的类型。
2.map<K, V>::mapped_type 在 map 容器中,键所关联的值的类型。
4.map<K, V>::value_type 一个 pair 类型,它的 first 元素具有 const map<K,V>::key_type 类型,而 second 元素则为 map<K,V>::mapped_type 类型。
7.在学习 map 的接口时,需谨记 value_type 是 pair 类型,它的值成员可以修改,但键成员不能修改。
8.不修改 map 对象的查询操作:
1.m.count(k) 返回 m 中 k 的出现次数。
2.m.find(k) 如果 m 容器中存在按 k 索引的元素,则返回指向该元素的迭代器。如果不存在,则返回超出末端迭代器
9.返回迭代器的关联容器操作:
1.m.lower_bound(k) 返回的迭代器则指向最后一个实例的下一位置。
2.m.upper_bound(k) 返回的迭代器则指向最后一个实例的下一位置。
3.m.equal_range(k) 返回一个迭代器的 pair 对象它的 first 成员等价于 m.lower_bound(k)。而 second 成员则等价于 m.upper_bound(k).