一、起始
众所周知,map是STL库中常用的关联式容器,底层实现就不多提了是平衡二叉树,今天主要关注的是map的KEY值,观看std::map源码如下:
template<class _Kty,
class _Ty,
class _Pr = less<_Kty>,
class _Alloc = allocator<pair<const _Kty, _Ty>>>
class map
: public _Tree<_Tmap_traits<_Kty, _Ty, _Pr, _Alloc, false>>
{ // ordered red-black tree of {key, mapped} values, unique keys
public:
map有四个参数,第一个为_Kty就是key,第二个_Ty就是value,第三、四都有默认值,所以在一定的条件下可以不填。
二、问题
可以看到map的定义中 _Kty和_Pr都可以为任意类型,对与基本类型的map数组定义如下:
std::map<int, double> int_to_double;
std::map<char, int> char_to_int;
不需要任何多余的操作,就能直接使用,当KEY为自定义时,情况就不一样了,代码如下: