回复set:获取csdn论坛对set集合关联容器的讲解

set使用前需要包含

set的详细用法在CSDN论坛中讲的相当清楚,这里再把常用到的子函数和特性进行展示。

set的两个特点:

①set内的元素是有序的。

②集合具有唯一性,集合内的元素都是唯一不重复的。

set的子函数:

begin()

返回指向第一个元素的迭代器

end()

返回指向最后一个元素的迭代器

clear()

清空集合

count()

返回某个值元素的个数

empty()

判断集合是否为空,为空返回true

equal_range()

返回集合中与给定值相等的上下限两个迭代器

erase()

删除集合中元素

find()

返回一个指向被查找到元素的迭代器

get_allocator()

返回集合的分配器

insert()

在集合中插入元素

lower_bound()

返回指向大于或等于某值的第一个元素的迭代器

key_comp()

返回一个用于元素间值比较的函数

max_size()

返回集合能容纳的元素的最大限值

rbegin()

返回指向集合中最后一个元素的反向迭代器

rend()

返回指向集合中第一个元素的反向迭代器

size()

集合中元素的数目

swap()

交换两个集合变量

upper_bound()

返回大于某个值元素的迭代器

value_comp()

返回一个用于比较元素间值的函数

具体用例展示:

展示迭代器、begin、end用法

展示定义时左闭右开

展示有序性质

#include #include using namespace std;int main(){    int myints[] = {6, 5, 4, 3, 2, 1};    set<int> myset(myints, myints + 6); //左闭右开    cout << "myset contains:";    for (set<int>::iterator it = myset.begin(); it != myset.end(); it++) //定义迭代器、使用begin、end函数        cout << ' ' << *it;                                              //对迭代器取内容可以直接获取内容    cout << '\n';    return 0;}

输出结果:

倘若我们将654321改为655321

则可以看出集合的唯一性:

insert 、erase、size 函数使用:

#include #include using namespace std;int main(){    int myints[] = {6, 5, 5, 3, 2, 1};    set<int> myset(myints, myints + 6); //左闭右开    cout << "myset contains:";    for (set<int>::iterator it = myset.begin(); it != myset.end(); it++) //定义迭代器、使用begin、end函数        cout << ' ' << *it;                                              //对迭代器取内容可以直接获取内容    cout << '\n';    cout << myset.size() << '\n'; //集合中元素个数    myset.erase(5);    cout << "after erase '5' myset contains:";    for (set<int>::iterator it = myset.begin(); it != myset.end(); it++) //erase函数        cout << ' ' << *it;    cout << '\n';    myset.insert(5);    cout << "after insert '5' myset contains:";    for (set<int>::iterator it = myset.begin(); it != myset.end(); it++) //insert函数 插入后仍然具备有序性        cout << ' ' << *it;    cout << '\n';    return 0;}

结果:

find 、lowerbound、upperbound函数的使用:

#include #include using namespace std;int main(){    int myints[] = {6, 5, 5, 3, 2, 1};    set<int> myset(myints, myints + 6); //左闭右开    cout << "myset contains:";    for (set<int>::iterator it = myset.begin(); it != myset.end(); it++) //定义迭代器、使用begin、end函数        cout << ' ' << *it;                                              //对迭代器取内容可以直接获取内容    cout << '\n';    set<int>::iterator it=myset.find(5);//操作后it指向5;    for (; it != myset.end(); it++)        cout << ' ' << *it;    it=myset.upper_bound(1);//it指向比1大第一个,即2    cout<<'\n';    for (; it != myset.end(); it++)        cout << ' ' << *it;    it=myset.lower_bound(1);//it指向1    cout<<'\n';    for (; it != myset.end(); it++)        cout << ' ' << *it;    return 0;    }

结果:


例题:安迪的第一个字典

输入一个文本,找出所有不同的单词(连续的字母排列),按照字典序从小到大输出。输出小写。

样例输入:

Good morning ! Good afernoon! Zhao tong xue !

分析:采用set和string string直接包含了小于运算,所以,录入集合后再输出就可以得到题目的结果。

#include #include #include #include using namespace std;set<string> dict; //定义一个string类型的集合int main(){    string s, buf;    while (cin >> s)    {        for (int i = 0; i < s.length(); i++) //string 子函数,判断字符串长度            if (isalpha(s[i]))                s[i] = tolower(s[i]); //isalpha用于判断是否为英文字母,tolower用于转换为小写字母            else                s[i] = ' '; //不是英文字母则转换为空格        stringstream ss(s); //将转换后的s重载入ss流        while (ss >> buf)            dict.insert(buf); //读取ss流已经保证全部为单词,并录入到集合    }    for (set<string>::iterator it = dict.begin(); it != dict.end(); it++)        cout << *it << '\n'; //输出集合    return 0;}

得到的结果:

以上就是今天set用法的介绍。

set获取元素_C++与STL入门(4):关联容器:集合set相关推荐

  1. STL教程(十): 关联容器--unordered_map/unordered_multimap

    一.unordered_map/unordered_multimap简介 template<class Key,class T,class Hash = std::hash<Key> ...

  2. STL系列:关联容器的操作

    在C++ 中定义了几种类型用来表示容器关键字和值的类型. key_type mapped_type value_type 对于set,由于保存的值就是关键字,所以,key_type和value_typ ...

  3. STL中的set容器的一点总结

    1.关于set C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构 ...

  4. stl clocklist 查找元素_C++算法竞赛中常用的STL

    什么是STL? STL,Standard Template Library的缩写,标准模版库的意思.STL是一些"容器"的集合,这些容器包括list. vector.set.que ...

  5. stl clocklist 查找元素_C++|通俗理解STL

    "存储程序"是电子计算机技术一个很重要的概念.程序能在计算机上运行,必须先让程序代码从其他的一些存储介质(如光盘或硬盘)读入到内存,然后才能由控制器从内存读取.解释并产生控制信号, ...

  6. jQuery——入门基础(获取元素、样式、属性,选择集、过滤器、样式类)

    目录 Jquery的加载方法 获取元素 操作样式和属性 选择集和过滤器 选择集转移 绑定常用事件 操作样式类名 Jquery的加载方法 (1)$(document).ready(function(){ ...

  7. JavaScript基础13-day15【DOM增删改、DOM添加删除记录、操作内联样式、获取元素的样式、DOM Element 对象、滚动条练习、事件对象、div跟随鼠标移动、事件冒泡】

    学习地址: 谷粒学院--尚硅谷 哔哩哔哩网站--尚硅谷最新版JavaScript基础全套教程完整版(140集实战教学,JS从入门到精通) JavaScript基础.高级学习笔记汇总表[尚硅谷最新版Ja ...

  8. JavaScript基础12-day14【DOM查询(获取元素节点、获取元素节点的子节点)、全选练习、DOM增删改、DOM添加删除记录、Window对象方法】

    学习地址: 谷粒学院--尚硅谷 哔哩哔哩网站--尚硅谷最新版JavaScript基础全套教程完整版(140集实战教学,JS从入门到精通) JavaScript基础.高级学习笔记汇总表[尚硅谷最新版Ja ...

  9. python selenium 获取元素下的元素个数_Python + Selenium,分分钟搭建 Web 自动化框架!(送自动化测试书籍)...

    前言 在程序员的世界中,一切重复性的工作,都应该通过程序自动执行.「自动化测试」就是一个最好的例子.随着互联网应用开发周期越来越短,迭代速度越来越快,只会点点点,不懂开发的手工测试,已经无法满足如今的 ...

最新文章

  1. 微信小程序商城demo
  2. seer文献_文献解读 | 师兄带你读一篇免疫浸润3分文章!
  3. Metasploit没有db_autopwn命令的解决办法
  4. 【Spring】No suitable HttpMessageConverter repsonse type
  5. c语言字符串怎么转为正数,把字符串转换为与之等价的整型值
  6. 谷歌升级AutoML,可用于大规模图像分类和物体检测
  7. mysql 手机归属地_盒子 - 手机归属地 MySql 数据
  8. php 类中输出所有属性,PHP基于反射获取一个类中所有属性
  9. 数据库系统 图书管理系统 C语言
  10. 快速查找文件的神器Listary
  11. Python爬虫 批量采集京东商品数据,实时了解商品价格走势
  12. Windows7下OEM中证书错误,导航已阻止解决办法
  13. JS 最新版身份证格式验证
  14. MFC隐藏任务栏图标并显示到托盘
  15. 禁用 Word 2013/2016 信息检索
  16. 播放index.m3u8切片文件显示为直播问题
  17. python实现简单的多人聊天功能
  18. SpringMVC(3)
  19. 谷歌浏览器英文页面翻译成中文<配置方式>
  20. 数据分析的三重境界,你在哪个阶段?

热门文章

  1. win11还原点如何设置 windows11还原点的设置方法
  2. ubuntu20.04系统 ros noetic下安裝orbslam2
  3. can硬件结构和工作原理_汽车CAN总线工作原理及测量方法详解
  4. c语言实验操作期末考试怎么把试题保存,c语言上机操作练习题_相关文章专题_写写帮文库...
  5. 从无到有axure原型设计_Axure|微信原型制作
  6. python批量安装第三方库_使用Python批量安装第三方库
  7. vue-cli 外部引入vue-router报错 Uncaught TypeError: Cannot redefine property: $router
  8. 纯CSS3实现流星划过动画
  9. Open3d之网格变形
  10. 江西理工大学c语言考试题库,江西理工大学C语言程序设计竞赛(初级组)(示例代码)...