map:关键字-值(key-value)对,字典
set:关键字的集合,可以高效的查询一个关键字是否在这个集合中.
允许重复关键字的容器名字中包含 multi(即一个关键字有多个值),用哈希函数组织的无需容器以unordered开头
map<string, size_t> word_count;
++word_count["SomeKey"];
//如果word_count中没有SomeKey,则下标运算会自动创建一个新的元素,关键字为SomeKey,值为0(值执行默认初始化?)
map中的元素为pair类型对象,first成员保存关键字,second成员保存对应的值.
关键字类型要求必须实现 元素比较方法,或自定义操作提供比较函数,要满足基本三点要求:
两个元素不能同时小于对方;如果k1小于k2,那么k2绝不能小于k1.
如果k1小于k2,且k2小于k3,那么k1必须小于k3;
如果存在两个元素,任何一个都不小于另一个,那么我们称这两个元素是"等价"的.如果k1"等价于"k2,且k2"等价于"k3,那么k1必须"等价于"k3.
pair的默认构造函数对数据成员进行值初始化,有两个public的成员,first,second;关键字first是const的.set的迭代器是const的.
当解引用map迭代器时,会得到一个value_type对象,当对map下标访问时,会得到mapped_type对象