首页 > 代码库 > Ch5 关联式容器(中)
Ch5 关联式容器(中)
5.3 set
- 所有元素都会根据元素的键值自动被排序,set元素的键值就是实际值,实际值就是键值,set不允许两个元素有相同的键值;
- 因为set元素的值就是其键值,关系到set元素的排列规则,所以set的迭代器是constant iterator;
- 对set进行insert或erase操作,其迭代器在操作后仍然有效(这点和list相同);
- 标准STL的set是以RB-tree为底层机制的,几乎所有的set操作行为,都只是调用RB-tree的操作行为而已。
5.4 map
- 所有元素都会根据元素的键值自动被排序;
- map的所有元素都是pair,同时拥有实际值(value)和键值(key),pair的第一元素被视为键值,第二元素被视为实际值;
- map不允许两个元素拥有相同的键值;
//<stl_pair.h>template <class T1, class T2>struct pair{ typedef T1 first_type; typedef T2 second_type; T1 first; T2 second; pair() : first(T1(), second(T2()) { } pair(const T1& a, const T2& b) : first(a), second(b) { }};- 同样地,map的迭代器不允许改变map的元素内容(键值不可以,但实际值可以);
- 标准STL的map是以RB-tree为底层机制的,几乎所有的map操作行为,都只是调用RB-tree的操作行为而已。
5.5 multiset
multiset的特性及用法和set完全相同,唯一的差别在于它允许键值重复,因此它的插入操作采用的是底层机制RB-tree的insert_equal()而非insert_unique()。
5.6 multimap
multimap的特性及用法和map完全相同,唯一的差别在于它允许键值重复,因此它的插入操作采用的是底层机制RB-tree的insert_equal()而非insert_unique()。
Ch5 关联式容器(中)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。