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容器简介相关推荐

  1. C++STL的set/ multiset容器

    C++STL的set/ multiset容器 set基本概念 set大小和交换 set插入和删除 set查找和统计 set和multiset区别 pair对组创建 set容器排序 set基本概念 简介 ...

  2. 【C++】【第六篇-2】【黑马 p215~p242】【list容器】【set/multiset容器】【map/multimap容器】【函数对象】【谓词】【内建函数对象】

    [C++][第六篇-2][黑马 p215~p242][list容器][set/multiset容器][map/multimap容器][函数对象][谓词][内建函数对象] 3.7 list容器(p215 ...

  3. set和multiset容器

    1 set和multiset容器的能力 set 和multiset容器的内部结构通常由平衡二叉树(balancedbinary tree)来实现.当元素放入容器中时,会按照一定的排序法则自动排序,默认 ...

  4. docker容器简介及安装

    docker容器简介及安装 一.docker的前世今生 早期 过度 目前 二.什么是docker 三.docker核心概念 1.镜像 2.容器 3.仓库 四.docker容器和虚拟机的区别 五.doc ...

  5. c++中的set容器和multiset容器

    set容器基本概念 set的特性是,所有元素都会根据元素的键值自动被排序.set的元素不像map那样可以同时拥有实值和键值,set的元素即是键值又是实值.set不允许两个元素又相同的键值. 我们不可以 ...

  6. 第十三篇:multimap容器和multiset容器中的find操作

    前言 multimap容器是map容器的" 增强版 ",它允许一个键对应多个值.对于map容器来说,find函数将会返回第一个键值匹配元素所在处的迭代器.那么对于multimap容 ...

  7. Spring 容器简介

    1.美图 2.Spring 容器简介 Spring容器,我们常用的就是ApplicationContext,容器本身是存放Bean和Bean之间的依赖关系的,那么容器的生命周期是什么概念呢? 我们可以 ...

  8. stl之multiset容器的应用

    与set集合容器一样,multiset多重集合容器也使用红黑树组织元素数据,只是multiset容器允许将重复的元素健值插入,而set容器则不允许. set容器所使用的C++标准头文件set,其实也是 ...

  9. java web分享ppt大纲 -- servlet容器简介

    今天在公司分享了java web的ppt,把ppt大纲放在这里,希望可以帮助需要的人 servlet容器简介 定义 狭义上的,servlet容器为java Web应用提供运行时环境,负责管理servl ...

最新文章

  1. 在linux系统下实现音视频即时通讯的部分代码
  2. Ubuntu9.10下安装Thinkpad T400 R29无线网卡
  3. OpenCV霍夫直线检测的实例(附完整代码)
  4. Hadoop学习笔记—11.MapReduce中的排序和分组
  5. C# MVC的博客开发(三)注册
  6. python numpy ndarray之basic operations
  7. python读取文件内容-Python读取文件内容与存储
  8. vb.net 同时给多个属性赋值_传奇技能,第十四祭:装备属性修改与增加新装备...
  9. foxmail新建文件夹失败或者新建文件夹不显示的问题
  10. 独立安装 lamp 兄弟连
  11. 青铜器RDM与PTC Windchill协同构建货真价实的PLM解决方案
  12. 隐枚举法求解0-1整数规划
  13. Win10各版本区别
  14. ORB-SLAM2的源码阅读(九):Initializer类
  15. 关于Rasa你必须要知道的几件事
  16. HTML5 Video播放本地文件
  17. python安装和版本选择
  18. java操作excel
  19. 关于计算机专业英语的小短文,有没人有计算机专业英语的短文,200字左右。
  20. SpringBoot集成阿里云支付

热门文章

  1. 【Django】orm继承AbstractUser表
  2. spring mvc + freemarker 整合
  3. axure rp 8.0
  4. 解决redhat的未注册问题
  5. salt stack 工具之一——远程命令
  6. CentOS 6.5系统安装配置图解教程(详细图文)
  7. gcc选项 和 gdb 使用
  8. malloc()背后的实现原理——内存池
  9. 【图像】jpg与jpeg的区别
  10. 【Word】如何把代码优美的插入word