C++关联容器类:集合和多重集合类、映射和多重映射类
来源:互联网 发布:知乎社区 官网 编辑:程序博客网 时间:2024/06/06 02:44
关联容器(associative container):它们能通过关键字(search key)直接访问(存储和读取元素)。包括四类:集合(set),多重集合(multiset),映射(map)和多重映射(multimap)。
集合和多重集合类
◆ 1、集合和多重集合类:提供了控制数值集合的操作,其中数值是关键字,即不必另有一组值与每个关键字相关联。
集合与多重集合类的主要差别在于多重集合允许重复的关键字,而集合不允许重复的关键字。
元素的顺序由比较器函数对象(comparator function object)确定。例如对整型集合multiset,只要用比较器函数对象less<int>排序关键字,元素即可按升序排列。
◆ 2、集合(set)类模板声明为:
template<typename Key, typename Pred = less<Key>,
typename A = allocator<Key> >class set;
//模板参数表中的非类型参数同样可有默认值
◆ 3、集合(set)类容器的构造函数:
set (); //构造一个空的按默认次序排列的集合
set (pr); //构造一个空的按函数对象pr排序的集合
set (first,last);
//构造一个默认次序排列的集合,元素值由区间[first,last)指定的序列复制
set (first,last,pr); //同上,但按函数对象pr排序
这些构造函数还可以显式给出分配子(Allocator)对象。
◆ 4、集合和多重集合类支持双向迭代子。
◆ 5、多重集合(multiset)和集合(set)通常实现为红黑二叉排序树。红黑二叉排序树是实现平衡二叉排序树的方法之一。
【例11.7】整型多重集合关联容器类。(查看源码)
映射和多重映射类
◆ 1、映射和多重映射类:它们提供了操作与关键字相关联的映射值(mapped value)的方法。
映射和多重映射的主要差别在于多重映射允许存放与映射值相关联的重复关键字,而映射只允许存放与映射值一一对应的单一关键字。
多重映射和映射关联容器类用于快速存储和读取关键字与相关值(关键字/数值对,key/value pair)。
如果保存学生的简明资料,要求按学号排序,使用映射关联容器(因为不会重号)是最合适的。如用姓名排序,因姓名可能重复,使用多重映射更为合适。使用时要用头文件<map>。
◆ 2、映射(map)类模板声明:
template<typename Key,typename T,typename Pred = less<Key>,
typename A = allocator<pair<const Key,T>> > class map;
◆ 3、 map容器有多种构造函数:
map (); //构造一个空的按默认次序排列的映射
map (pr); //构造一个空的按函数对象pr排序的映射
map (first,last);
//构造按默认次序排列的映射,元素值由区间[first,last)指定的有序序列复制
map (first,last,pr); //同上,但按函数对象pr排序
这些构造函数还可以显式给出分配子(allocator)对象。
◆ 4、映射(map)类的使用:映射和多重映射类支持双向迭代子。
映射定义了成员操作符[]:
T& operator[const Key& key]
这样映射的使用是非常方便的,就如同一个数组,关键字作为下标,相关值作为元素值。
【例11.8】我国部分省份与面积映射关联容器类的演示。 (查看源码)
- C++关联容器类:集合和多重集合类、映射和多重映射类
- C++关联容器类:集合和多重集合类、映射和多重映射类
- 【C++】STL常用容器总结之十:多重映射multimap和多重集合multiset
- STL 关联容器之集合和多重集合
- 关联容器,集合set和映射map
- 多重集合与多重映射实例
- Day50、标准模板库、向量、迭代器、查找和排序、双端队列、列表、堆栈、队列和优先队列、映射、多重映射、集合、多重集合
- multiset 多重集合容器
- Multiset多重集合容器
- multiset多重集合容器
- multiset多重集合容器
- multiset 多重集合容器
- 组件映射和集合映射
- C++STL之multiset多重集合容器
- 集合类(Collections)映射
- Java映射和集合
- Hibernate集合映射、关联映射
- 多重映射
- 安卓手册摘录
- java调用接口的各种方法
- 51Nod-1469-淋漓尽致子串
- 1172: 矩阵边界和(指针专题)
- 函数的声明方式
- C++关联容器类:集合和多重集合类、映射和多重映射类
- js之数组
- 根据url生成二维码
- Remove Duplicates from Sorted Array II问题及解法
- 2017.8.2——广搜(bfs)+队列的使用
- 并查集
- poj1845 逆元 因子和
- Linux命令集
- 牛顿法求解立方根