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. 重磅丨李飞飞亲自带队,谷歌AI中国中心今天正式成立
  2. zcu102 hdmi example(一)
  3. 探索 ConcurrentHashMap 高并发性的实现机制--转
  4. [蓝桥杯][算法提高VIP]扫雷-枚举
  5. pipenv和autoenv
  6. 使用Python从PDF文件中提取数据
  7. 董小姐宣布重磅升级:格力空调包修时长正式升级为10年
  8. python多线程编程技术主要应用_python多线程,多进程编程。
  9. oracle 039 00 039,python+robot+oracle:执行脚本时中文sql报错:UnicodeEncodeError: #039;ascii#039; codec can#...
  10. c语言中常用数学符号,2016GRE数学常用数学符号大盘点
  11. iOS开发那些事--nib、xib与故事板的关系
  12. Oracle的云计算模式
  13. 通信专业顶刊_通信类会议期刊排名(转)
  14. C++标准委员会7月科隆会议中投票通过的特性
  15. windows方法和属性
  16. 在Linux上运行若依出错,解决若依linux启动ERROR
  17. Scratch之制作幸运抽奖机
  18. 小虎电商浏览器:鹰智客服插件怎么下载?安装麻烦吗?
  19. sapmto生产模式配置及操作详解_PP: 混合生产方式(MTO与MTS为例)
  20. ldconfig命令简介

热门文章

  1. pageContext对象、JSP标签
  2. 58同城笔试题:数组去重;分饼干(分糖果);最小路径和(leetcode64)
  3. Neutron系列 : Neutron OVS OpenFlow 流表 和 L2 Population(8)
  4. 2018江苏冬令营5 交换矩阵
  5. 一些关于并行计算的科研思路
  6. 一些简单的MyEclipse快捷键操作
  7. console的一些方法
  8. Linux系统查看各种信息
  9. 今天中午的时候,可能是自己太忙过头了,所以出现了拿错卡去充值
  10. 我读的第一本书《梦断代码》