我们学习过顺序容器如vecor,list等,它们中的元素是按照在容器中的位置来顺序保存和访问的。而接下来要学习的关联容器则有根本的不同,它们中的元素是按关键字来保存和访问的。
在《C++Primer》中列举了标准库中的8个关联容器,如下:
关联容器支持高效的关键字查找和访问,我们在这里介绍两个主要的关联容器set和map。
map
map里面存的是一些key-value对,其中key起到索引的作用, 而value则表示于索引相关联的数据。
比如字典就是一个很好使用map的例子,把单词当作key,解释当作value。其实map类型也常称做关联数组,它和一般的数组类似,可以认为它key就是数组的下标(只不过不必是整数),value则是数组存的值,还是上面的字典例子,比如有某个单词为right,它的其中一个解释为右边的,我们就可以使用类似数组的方式a[“right”]访问到“右边的”这个解释。
set
set里面每个元素只存有一个key,它支持高效的关键字查询操作,比如检查一个关键字是否在set中或者在
某些文本处理过程中可用set保存想要忽略的单词
在学习这两种关联容器之前,我们可以先看一两个如何使用这类容器的例子。
假设一个字符串数组,里面的每个字符串都是水果,比如苹果,梨子等,现在要统计每种水果出现的次数。
string fruit[] =
{
"apple", "pear", "watermelon", "peach", "banana",
"apple", "pear", "watermelon", "peach",
"apple", "pear", "watermelon",
"apple", "pear",
"apple",
};
size_t n = sizeof(fruit) / sizeof(