set和multiset容器简介
set和multiset容器简介
开发工具与关键技术:C++、VisualStudio
作者:何任贤
撰写时间:2019年06月20日
set 是一个集合容器,其中所包含的元素是唯一的,集合中的元素按一定的顺序排列。它其他的
容器不同,它是不能指定位置插入的,它的元素插入过程是按排序规则插入的。
set虽然不能指定位置插入,但是在插入和删除操作较快,因为set采用红黑树变体的数据结构
实现,红黑树属于平衡二叉树。
但是set不能直接存取元素,不可以使用at.(pos)与[]操作符。
那么set和multiset的区别:set 支持唯一键值,每个元素值只能出现一次;而 multiset 中同一值可
以出现多次,虽然set和multiset有区别,但是其他的基本一样。
不可以直接修改 set 或 multiset 容器中的元素值,因为该类容器是自动排序的。如果希望修改一
个元素值,必须先删除原有的元素,再插入新的元素。
下面是set容器的使用示范
#include
#include
using namespace std;
void main()
{
set set1;
for (int i = 0; i<5; i++)
{
int tmp = rand()%100;
set1.insert(tmp);
}
set1.insert(10);
set1.insert(10);
set1.insert(10);
set1.insert(10);
set1.insert(10);
for (set::iterator it = set1.begin(); it != set1.end(); it++)
{
cout << *it << " ";
}
cout << “\n”;
}
这是set容器的演示,那么我们可以在结果图看到六个元素,但是我们上面for循环增加随机数5个,后面又
增加 了5个10,而在set容器中遍历出来的只有6个,少了4个10。
我之前说过set和multiset的区别, set支持唯一键值,每个元素值只能出现一次,意思是set容器中一个元素只能出现一次,所以刚才新增的5个10就只剩一个了。
下面是multiset的简单演示,大体内容和set演示一样。
#include
#include
using namespace std;
void main()
{
multiset set1;
for (int i = 0; i<5; i++)
{
int tmp = rand()%100;
set1.insert(tmp);
}
set1.insert(10);
set1.insert(10);
set1.insert(10);
set1.insert(10);
set1.insert(10);
for (multiset::iterator it = set1.begin(); it != set1.end(); it++)
{
cout << *it << " ";
}
cout << “\n”;
}
我们可以看到的是multiset容器和set容器不同,multiset容器把相同的元素也保存了,而set容器不会,
它们都是会自动排序的容器,而且元素搜索速度快,安插元素速度快无论在哪里安插,但是不能随机存取。
以上是set和multiset容器的简单介绍。
set和multiset容器简介相关推荐
- C++STL的set/ multiset容器
C++STL的set/ multiset容器 set基本概念 set大小和交换 set插入和删除 set查找和统计 set和multiset区别 pair对组创建 set容器排序 set基本概念 简介 ...
- 【C++】【第六篇-2】【黑马 p215~p242】【list容器】【set/multiset容器】【map/multimap容器】【函数对象】【谓词】【内建函数对象】
[C++][第六篇-2][黑马 p215~p242][list容器][set/multiset容器][map/multimap容器][函数对象][谓词][内建函数对象] 3.7 list容器(p215 ...
- set和multiset容器
1 set和multiset容器的能力 set 和multiset容器的内部结构通常由平衡二叉树(balancedbinary tree)来实现.当元素放入容器中时,会按照一定的排序法则自动排序,默认 ...
- docker容器简介及安装
docker容器简介及安装 一.docker的前世今生 早期 过度 目前 二.什么是docker 三.docker核心概念 1.镜像 2.容器 3.仓库 四.docker容器和虚拟机的区别 五.doc ...
- c++中的set容器和multiset容器
set容器基本概念 set的特性是,所有元素都会根据元素的键值自动被排序.set的元素不像map那样可以同时拥有实值和键值,set的元素即是键值又是实值.set不允许两个元素又相同的键值. 我们不可以 ...
- 第十三篇:multimap容器和multiset容器中的find操作
前言 multimap容器是map容器的" 增强版 ",它允许一个键对应多个值.对于map容器来说,find函数将会返回第一个键值匹配元素所在处的迭代器.那么对于multimap容 ...
- Spring 容器简介
1.美图 2.Spring 容器简介 Spring容器,我们常用的就是ApplicationContext,容器本身是存放Bean和Bean之间的依赖关系的,那么容器的生命周期是什么概念呢? 我们可以 ...
- stl之multiset容器的应用
与set集合容器一样,multiset多重集合容器也使用红黑树组织元素数据,只是multiset容器允许将重复的元素健值插入,而set容器则不允许. set容器所使用的C++标准头文件set,其实也是 ...
- java web分享ppt大纲 -- servlet容器简介
今天在公司分享了java web的ppt,把ppt大纲放在这里,希望可以帮助需要的人 servlet容器简介 定义 狭义上的,servlet容器为java Web应用提供运行时环境,负责管理servl ...
最新文章
- 在linux系统下实现音视频即时通讯的部分代码
- Ubuntu9.10下安装Thinkpad T400 R29无线网卡
- OpenCV霍夫直线检测的实例(附完整代码)
- Hadoop学习笔记—11.MapReduce中的排序和分组
- C# MVC的博客开发(三)注册
- python numpy ndarray之basic operations
- python读取文件内容-Python读取文件内容与存储
- vb.net 同时给多个属性赋值_传奇技能,第十四祭:装备属性修改与增加新装备...
- foxmail新建文件夹失败或者新建文件夹不显示的问题
- 独立安装 lamp 兄弟连
- 青铜器RDM与PTC Windchill协同构建货真价实的PLM解决方案
- 隐枚举法求解0-1整数规划
- Win10各版本区别
- ORB-SLAM2的源码阅读(九):Initializer类
- 关于Rasa你必须要知道的几件事
- HTML5 Video播放本地文件
- python安装和版本选择
- java操作excel
- 关于计算机专业英语的小短文,有没人有计算机专业英语的短文,200字左右。
- SpringBoot集成阿里云支付