介绍
map
是一个封装红黑树 (自平衡二叉树) 的关联容器。容器中每个元素都是 key/value,其中 key 为排序对象。每个 key 只能出现一次,不允许重复出现。
map
定义于头文件 <map>
中,其声明如下:
template<
class Key,
class T,
class Compare = std::less<Key>,
class Allocator = std::allocator<std::pair<const Key, T> >
> class map;
map
容器是一个类。
map
容器存储元素都是key/value
(键值对)。
初始化
map
容器需要指定排序规则,有两种方式可指定:
- 元素类型重载小于号运算符。
strcut T { …… // 各种参数 // 该函数声明必须这样写 friend bool operator <(const T& a,const T& b) { // check(a,b)为 a < b 成立条件 return check(a,b) ? true : false; } };
- 以 类型参数 定义,需要定义一个 函数对象。如
set<T,greater<T> >
。struct Cmp { bool operator()(const T& a,const T& b) { // check(a,b)为 a < b 成立条件 return check(a,b) ? true : false; } }; class Cmp { public: bool operator()(const T& a,const T& b) { // check(a,b)为 a < b 成立条件 return check(a,b) ? true : false; } }; // 这两个 Cmp 是等价的 map<int,int,Cmp> s;
以下构造函数都不涉及定义排序规则,均采用默认排序规则——升序。
map<T,T> mp;
创建一个空的map
容器。map<int,string> mp;
map<T,T> mp({ {num1.key,num1.value},{num2.key,num2.value},……});
创建一个以初值列元素为初值的map
容器。m