标签:
关于map的定义:
template < class Key, class T, class Compare = less<Key>,
class Allocator = allocator<pair<const Key,T> > > class map;
第一个template参数被当做元素的key,第二个template参数被当作元素的value。Map的元素型别Key和T,必须满足以下两个条件:
1.key/value必须具备assignable(可赋值的)和copyable(可复制的)性质。
2.对排序准则而言,key必须是comparable(可比较的)。
第三个template参数可有可无,用它来定义排序准则。这个排序准则必须定义为strict weak ordering。元素的次序由它们的key决定,和value无关。排序准则也可以用来检查相等性:如果两个元素的key彼此的都不小于对方,则两个元素被视为相等。如果使用未传入特定排序准则,就使用缺省的less排序准则——以operator<来进行比较。
所谓“排序准则”,必须定义strict weak ordering,其意义如下:
1.必须是“反对称性的”。
2.必须是“可传递的”。
3.必须是“非自反的”。
按照定义的要求:
我们有两种方法以自定义类型当key:
1.为自定义类型重载operator<,map的第三个参数为默认仿函数less<key>。
2. 不使用map的第三个参数为默认仿函数less<key>,自己编写一个比较仿函数。
标签:
原文地址:http://www.cnblogs.com/huhu0013/p/4548543.html