11.1 使用关联容器

  关联容器支持高效的关键字查找和访问。两个主要的关联容器类型是map和set。类型map和multimap定义在头文件map中;set和multiset定义在头文件set中;无序容器则定义在头文件unordered_map和unordered_set中。

  map是关键字-值对的集合。map类型通常被称为关联数组。我们通过一个关键字而不是位置来查找值,给定一个名字到电话号码的map,我们可以使用一个人的名字作为下标来获取此人的电话号码。

  与之相对,set就是关键字的简单集合。当只是想知道一个值是否存在时,set是最有用的。

  使用map
  例如:

//统计每个单词在输入中出现的次数
map<string,size_t> word_count;  //string到size_t的空map
string word;
while(cin>> word)
    ++word_count[word];   //提取word的计数器并将其加1
for(const auto &w:word_count)  //对map中的每个元素
      //打印结果
      cout<<w.first<<"occurs "<<w.second
              <<((w.second>1)?" times" : "time")<<endl;

  使用set
  例如:

//统计输入中每个单词出现的次数
map<string,size_t> word_count;  //从string到size_t的空map
set<string> exclude={"The","But","And","Or","An","A",
                                   "the","but","and","or","an","a"};
string word;
while(cin>word)
      //只统计不在exclude中的单词
      if(exclude.find[word]==exclude.end())
         ++word_count[word];  //获取并递增word的计数器
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第11章 关联容器 关联容器类型描述map保存关键字-值对multimap关键字可重复的mapset保存关键字mu...
    北冥有鱼wyh阅读 2,985评论 0 1
  • 关联容器和顺序容器根本的不同: 关联容器中的元素是按关键字保存和访问的;顺序容器中的元素是按在容器中的位置顺序保存...
    Kreat阅读 1,573评论 0 0
  • 关联容器和顺序容器的本质区别在于:关联容器中的元素是按关键字来保存和访问的,而顺序容器是按它们在容器中的位置来顺序...
    梦中睡觉的巴子阅读 1,755评论 0 0
  • 简介 标准库提供8个关联容器: map:关联数组 set:只保存关键字 multimap:关键字可重复出现的map...
    TOMOCAT阅读 1,839评论 0 0
  • 11关联容器 11.1使用关联容器 Map,关键字-值对的集合。例如,可以将一个人的名字做关键字,其电话号码作为值...
    龟龟51阅读 1,586评论 0 0