set由一群key组合而成。如果我们想知道某值是否存在于某个集合内,就可以使用set。例如,在graph traversal(图形遍历)算法中,我们可以使用set储存每个遍历过的节点(node)。在移至下一节点前,我们可以先查询set,判断该节点是否已经遍历过。

首先推荐一篇特别棒的博文:c++中set的用法
以前一节的字数统计程序为例,它可能不想统计一般中性词汇的出现次数。为实现此目的,我们定义一个用来记录“排除字眼”的set,元素类型为string,注:下例代码修改自上篇博文《Essential C++》笔记之关联容器map的使用总结-例1

//小问学编程
//编写一个能对文章内每个字眼的出现次数加以分析的程序
//以前一节的字数统计程序为例,它可能不想统计一般中性词汇
//的出现次数。为实现此目的,我们定义一个用来记录“排除字眼”
//的set,元素类型为string
#include<iostream>
#include<map>
#include<string>
#include<set>using namespace std;int main()
{map<string,int> words;map<string,int>::iterator it;set<string>word_exclusion;word_exclusion.insert("is");string tword;while(cin>>tword)//输入的keyif(tword!="q"){if(word_exclusion.count(tword))//如果tword涵盖于“排除字集”内,//就跳过此次迭代的剩余部分。continue;//OK:一旦抵达此处,表示tword并不属于“排除字集”。words[tword]++;//增加的是value}elsebreak;for(it=words.begin();it!=words.end();it++){cout<<it->first<<" 出现次数为: "<<it->second<<endl;}//方法一利用map的find()函数查询int count_1=0;it=words.find("is");if(it!=words.end())count_1=it->second;cout<<"利用map的find(),存在key为is的value为: "<<count_1<<endl;//方法二利用map的count()函数查询int count_2=0;string search_word("boy");if(words.count(search_word))//ok,它存在count_2=words[search_word];//把key对应的value赋给了count_2cout<<"利用map的count(),存在key为boy的value为: "<<count_2<<endl;
}

运行结果:

注意本例以下几处:

注:set元素是默认按照key值排序(sorted)的

——《Essential C++》中文版 Page 92

《Essential C++》笔记之关联容器set的使用总结相关推荐

  1. 《Essential C++》笔记之关联容器map的使用总结

       map被定义为一对(pair)数值,其中的key通常是个字符串,扮演索引的角色,另一个数值是value. 字典便是map的一个不错实例.如果要编写一个能对文章内每个字眼的出现次数加以分析的程序, ...

  2. C++primer笔记之关联容器

    在这一章中,有以下的几点收获: 1.pair类型的使用相当频繁,如果需要定义多个相同的pair类型对象,可考虑利用typedef简化其声明: typedef pair<string, strin ...

  3. 《C++ Primer 第5版》-11.1使用关联容器-康奈尔笔记

    引入:2018年10月看<C++ Primer 第5版>而写的简单笔记 使用关联容器 使用map 使用set Map set 关联容器 Map头文件 Set头文件 Multimap头文件 ...

  4. QT学习笔记(八):顺序容器和关联容器

    QT学习笔记(八):顺序容器和关联容器 一.前言 二.容器介绍 2.1 顺序容器 2.2 关联容器 二.顺序容器示例 三.关联容器 一.前言 在Qt库中为我们提供了一系列的基于模板的容器类(conta ...

  5. 《C++ Primer 第5版》-11.2关联容器概述-康奈尔笔记

    引入:2018年10月看<C++ Primer 第5版>而写的简单笔记 11.2.1定义关联容器 关联容器概述 定义关联容器 初始化multimap或multiset map<str ...

  6. C++ Primer 5th笔记(chap 11)关联容器---无序容器

    无序关联容器 unordered associative container •unordered_map •unordered_set •unordered_multimap •unordered_ ...

  7. C++ Primer 5th笔记(chap 11)关联容器

    •map •multimap •set •multiset •set •unordered_map •unordered_set •unordered_multimap •unordered_mult ...

  8. 《C++ Primer 5th》笔记(11 / 19):关联容器

    文章目录 使用关联容器 使用map 使用set 关联容器概述 定义关联容器 初始化multimap 或 multiset 关键字类型的要求 有序容器的关键字类型 使用关键字类型的比较函数 pair类型 ...

  9. C++|STL学习笔记-对STL中关联容器map的进一步认识

    关联容器map key + value 的值 关联容器 = 有序容器(红黑树) + 无序容器(散列表) + hash_map 有序容器中: map的键值是不允许重复的 multimap的键值是允许重复 ...

最新文章

  1. 复利计算5.0——结对(总结)
  2. mysql使用 CONCAT(字段,字段) 函数拼接
  3. Caffe源码解析1:Blob
  4. 链表 队列 基本概念 为什么使用二叉查找树 抽象数据类型
  5. centos7 下 的lamp 的安装原创详细教程
  6. 中山大学2018年数学分析高等代数考研试题
  7. Python遍历文件夹获取文件名并写入excel
  8. POJ1917 UVA10361 Automatic Poetry【文本】
  9. 对数线性模型:逻辑斯谛回归和最大熵模型
  10. PDF资源:Windows程序设计、Python3网络爬虫开发实战
  11. 【AI模型部署】maskrcnn在tfserver部署以及调用时遇到问题:Servable not found for request “xx”、‘incompatible_shape_error‘
  12. 机械革命计算机配置,机械革命笔记本Bios设置方法
  13. 黑客专用文本编辑器Emacs中文手册
  14. 实对称矩阵的一些性质(不包含证明)
  15. base64上传文件,后端接受处理(四)
  16. 业务应用数据库压力过大解决方案
  17. 合肥辰工科技有限公司
  18. python将矩阵顺时针旋转90度_在Python中将方形矩阵逆时针旋转90度的程序
  19. ViT强势应用 | V2X基于ViT提出了一个具有V2X通信的强大协作感知框架
  20. SpringBoot下Redis切换db

热门文章

  1. AndroidUtilCode框架 fileutils学习总结
  2. 一个java程序_从另一个java程序运行java程序
  3. 【MySQL】添加多个字段
  4. char类型输出地址
  5. a href='NewsShow.aspx?id=%#Eval(id) %' class=red%#Eval(title) %/a页面传值
  6. 关于“绑定(binding)”技术
  7. 计算机网络的维护 维修方法,网络故障怎么解决 网络维修常见网络故障维修方法【详细介绍】...
  8. mysql 40014无效,Oracle问题-ORA-14400:插入的分区关键字未映射到任何分区
  9. 十大经典排序算法2(Python版本)
  10. 电脑f2还原系统步骤_详解电脑重装系统步骤