set获取元素_C++与STL入门(4):关联容器:集合set
回复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相关推荐
- STL教程(十): 关联容器--unordered_map/unordered_multimap
一.unordered_map/unordered_multimap简介 template<class Key,class T,class Hash = std::hash<Key> ...
- STL系列:关联容器的操作
在C++ 中定义了几种类型用来表示容器关键字和值的类型. key_type mapped_type value_type 对于set,由于保存的值就是关键字,所以,key_type和value_typ ...
- STL中的set容器的一点总结
1.关于set C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构 ...
- stl clocklist 查找元素_C++算法竞赛中常用的STL
什么是STL? STL,Standard Template Library的缩写,标准模版库的意思.STL是一些"容器"的集合,这些容器包括list. vector.set.que ...
- stl clocklist 查找元素_C++|通俗理解STL
"存储程序"是电子计算机技术一个很重要的概念.程序能在计算机上运行,必须先让程序代码从其他的一些存储介质(如光盘或硬盘)读入到内存,然后才能由控制器从内存读取.解释并产生控制信号, ...
- jQuery——入门基础(获取元素、样式、属性,选择集、过滤器、样式类)
目录 Jquery的加载方法 获取元素 操作样式和属性 选择集和过滤器 选择集转移 绑定常用事件 操作样式类名 Jquery的加载方法 (1)$(document).ready(function(){ ...
- JavaScript基础13-day15【DOM增删改、DOM添加删除记录、操作内联样式、获取元素的样式、DOM Element 对象、滚动条练习、事件对象、div跟随鼠标移动、事件冒泡】
学习地址: 谷粒学院--尚硅谷 哔哩哔哩网站--尚硅谷最新版JavaScript基础全套教程完整版(140集实战教学,JS从入门到精通) JavaScript基础.高级学习笔记汇总表[尚硅谷最新版Ja ...
- JavaScript基础12-day14【DOM查询(获取元素节点、获取元素节点的子节点)、全选练习、DOM增删改、DOM添加删除记录、Window对象方法】
学习地址: 谷粒学院--尚硅谷 哔哩哔哩网站--尚硅谷最新版JavaScript基础全套教程完整版(140集实战教学,JS从入门到精通) JavaScript基础.高级学习笔记汇总表[尚硅谷最新版Ja ...
- python selenium 获取元素下的元素个数_Python + Selenium,分分钟搭建 Web 自动化框架!(送自动化测试书籍)...
前言 在程序员的世界中,一切重复性的工作,都应该通过程序自动执行.「自动化测试」就是一个最好的例子.随着互联网应用开发周期越来越短,迭代速度越来越快,只会点点点,不懂开发的手工测试,已经无法满足如今的 ...
最新文章
- 微信小程序商城demo
- seer文献_文献解读 | 师兄带你读一篇免疫浸润3分文章!
- Metasploit没有db_autopwn命令的解决办法
- 【Spring】No suitable HttpMessageConverter repsonse type
- c语言字符串怎么转为正数,把字符串转换为与之等价的整型值
- 谷歌升级AutoML,可用于大规模图像分类和物体检测
- mysql 手机归属地_盒子 - 手机归属地 MySql 数据
- php 类中输出所有属性,PHP基于反射获取一个类中所有属性
- 数据库系统 图书管理系统 C语言
- 快速查找文件的神器Listary
- Python爬虫 批量采集京东商品数据,实时了解商品价格走势
- Windows7下OEM中证书错误,导航已阻止解决办法
- JS 最新版身份证格式验证
- MFC隐藏任务栏图标并显示到托盘
- 禁用 Word 2013/2016 信息检索
- 播放index.m3u8切片文件显示为直播问题
- python实现简单的多人聊天功能
- SpringMVC(3)
- 谷歌浏览器英文页面翻译成中文<配置方式>
- 数据分析的三重境界,你在哪个阶段?
热门文章
- win11还原点如何设置 windows11还原点的设置方法
- ubuntu20.04系统 ros noetic下安裝orbslam2
- can硬件结构和工作原理_汽车CAN总线工作原理及测量方法详解
- c语言实验操作期末考试怎么把试题保存,c语言上机操作练习题_相关文章专题_写写帮文库...
- 从无到有axure原型设计_Axure|微信原型制作
- python批量安装第三方库_使用Python批量安装第三方库
- vue-cli 外部引入vue-router报错 Uncaught TypeError: Cannot redefine property: $router
- 纯CSS3实现流星划过动画
- Open3d之网格变形
- 江西理工大学c语言考试题库,江西理工大学C语言程序设计竞赛(初级组)(示例代码)...