, class Alloc = alloc> 第⼀个参数Key是关键字类型第⼆个参数T是值类型第三个参数Compare是⽐较函数(仿函数)第四个参数是内存配置对象
map内部存储机制实际是以红⿊树为基础,红⿊树在插⼊节点时,必须依照⼤⼩⽐对之后在⼀个合适的位置上执⾏插⼊动作。所以作为关键字,起码必须有“<”这个⽐较操作符。我们知道,int,float,enum,size_t等等简单关键字,都有内置的⽐较函数,与map搭配⽆论是插⼊还是查找,都没什么问题。但是作为复杂数据类型,如果没有明确定义“<”⽐较操作符,就不能与map直接搭配使⽤,除⾮我们⾃⼰定义第三个参数。
在选择map的关键字时,注意以下两点,同时这两点也是改错的⽅法:a) 关键字明确定义“<”⽐较操作符
b) 没有“<”⽐较操作符,⾃定义仿函数替代第三个参数Compare,该仿函数实现“()”操作符,提供⽐较功能。插⼊时各节点顺序以该仿函数为纲。
以std::pair为关键字掺⼊map
下⾯我们先写⼀个有错误的函数,在分析错误原因之后,逐步进⾏修正。#include