首页 > 编程语言 >C++容器---关联式容器<set>&<multiset>

C++容器---关联式容器<set>&<multiset>

时间:2023-08-14 11:35:38浏览次数:42  
标签:返回 容器 set 迭代 -- 元素 C++ --- 集合


由于multiset和set相差不大,所以基本以set做练习;

集合(Set)是一种包含已排序(升序)对象的关联容器。set/multiset会根据待定的排序准则,自动将元素排序。两者不同在于前者不允许元素重复,而后者允许。集合元素既充当数据,又充当关键码,以升序的顺序存储;multiset中的元素可以重复。

1) 不能直接改变元素值,因为那样会打乱原本正确的顺序,要改变元素值必须先删除旧元素,则插入新元素

2) 不提供直接存取元素的任何操作函数,只能通过迭代器进行间接存取,而且从迭代器角度来看,元素值是常数

3) 元素比较动作只能用于型别相同的容器(即元素和排序准则必须相同)

模板原型

//Key为元素(键值)类型

template <class Key, class Compare=less<Key>, class Alloc=STL_DEFAULT_ALLOCATOR(Key) > class set

key:元素的数据类型;

Comapre:实现内部排序的仿函数;

allocator:内存配置器,负责内存的分配和销毁;

构造函数:

1、set<int> s1;

2、set<int> s2(less<int>());   //以构造函数参数定义

3、set<int> ::allocator_type s1_Alloc;

s1_Alloc=s1.get_alloctor();

set<int> s3(less<int>(),s1_Alloc);

4、set<int,greater<int>> s4; //在模板中以参数形式实现;'> >'之间有空格;

成员函数:

insert()--在集合中插入元素 //返回pair(iterator,bool)      iterator:迭代器指针,插入的位置;bool:是否插入成功

-----------------------------------------------------------------------------------------------------


begin()--返回指向第一个元素的迭代器


end()--返回指向最后一个元素的迭代器

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

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

-----------------------------------------------------------------------------------------------------


empty()--如果集合为空,返回true


size()--集合中元素的数目

max_size()--返回集合能容纳的元素的最大限值

-----------------------------------------------------------------------------------------------------

erase()--删除集合中的元素

clear()--清除所有元素

-----------------------------------------------------------------------------------------------------

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


count()--返回某个值元素的个数

get_allocator()--返回集合的分配器

swap()--交换两个集合变量  //a.swap(b);

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


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


upper_bound()--返回大于某个值元素的迭代器

---------------------------------------------------------------

key_comp()--返回一个用于元素键值比较的函数  //返回kep_compare类型

value_comp()--返回一个用于比较元素实值的函数

eg:

set<int,less<int> >::key_compare kcl =  s1.key_comp();

-----------------------------------------------------------------------------------------------------





标签:返回,容器,set,迭代,--,元素,C++,---,集合
From: https://blog.51cto.com/u_12667998/7074298

相关文章

  • C++容器---关联式容器<map>&<multimap>
    由于multimap和map相差不大,所以基本以map做练习;集合(map)是一种包含已排序(升序)对象的关联容器。map/multimap会根据待定的排序准则,自动将元素排序。两者不同在于前者不允许元素重复,而后者允许。集合元素的第一个参数是key,第二个元素当做value,元素的顺序与key有关,与value无关;模板原......
  • 基于微信小程序的校园设备报修平台的设计与实现-计算机毕业设计源码+LW文档
    【摘要】随着互联网技术的发发展,计算机技术广泛应用在人们的生活中,逐渐成为日常工作、生活不可或缺的工具。在高校,各种管理系统层出不穷,为校园设备报修管理开发必要的系统,能够有效的提升管理效率。一直以来,校园设备报修一直没有进行系统化的管理,学生无法快速进行报修,由此提出开发基......
  • 集合-Collections及常用方法
    一.概述Collections类是Java提供的一个操作Set、List、Map等集合的工具类Collections类提供了许多操作集合的静态方法,借助这些静态方法可以实现对集合元素的排序、查找替换和线程安全化等操作Collections类中的方法都是静态的Collections类中没有构造函数,不能进行实例化二.常......
  • 解读 --- 对象的深拷贝
    合集-c#基础(12) 1.编码技巧---如何实现字符串运算表达式的计算07-122.编码技巧---同步锁对象的选定07-133.编码技巧---使用dynamic简化反射07-244.编码技巧---谨防闭包陷阱07-195.并发编程---信号量线程同步07-186.并发编程---为何要线程池化07-187.并发编程......
  • Spring Cloud Alibaba-服务雪崩效应
    一、高并发带来的问题在微服务架构中,我们将业务拆分成一个个的服务,服务与服务之间可以相互调用,但是由于网络原因或者自身的原因,服务并不能保证服务的100%可用,如果单个服务出现问题,调用这个服务就会出现网络延迟,此时若有大量的网络涌入,会形成任务堆积,最终导致服务瘫痪。二、服务......
  • 使用 transmittable-thread-local 组件解决 ThreadLocal 父子线程数据传递问题
    在某个项目中,需要使用mybatis-plus多租户功能以便数据隔离,前端将租户id传到后端,后端通过拦截器将该租户id设置到ThreadLocal以便后续使用,代码大体上如下所示:ThreadLocal<Integer>threadLocal=newInheritableThreadLocal<>();threadLocal.set(1);Java 我在Controlle......
  • KylinosV10银河麒麟高级服务器操作系统V10-安装telnet
    国产银河麒麟系统也是生产环境上经常遇到的(官网简介:银河麒麟高级服务器操作系统V10-国产操作系统、银河麒麟、中标麒麟、开放麒麟、星光麒麟——麒麟软件官方网站(kylinos.cn))这版系统分为服务器版和个人桌面版;其中服务器版命令估计是基于红帽体系;而桌面版命令估计是基于Ubunt......
  • python 学习-函数-匹配替换等操作
    1.re.match匹配re.match(pattern,string)`:从字符串的开头匹配正则表达式,返回一个匹配对象。如果没有找到匹配的子串,返回`None`str='choice:['app1-ui','app2-ui']'#查找str是否以空格开头第一个有效字符是choice的的行,如果是打印okifre.match(r'\s+choice.*',str):......
  • 第9周项目6-穷举法解决几何问题(3)
    问题及代码:/**Copyright(c)2014,烟台大学计算机学院*Allrightsreserved.*文件名称:MADE25.cpp*作者:孙化龙*完成日期:2014年10月27日*版本号:v1.0**问题描述:4人年龄为等差数列,且相加为26,乘积为880,求以他们年龄为等差数列的前20项。*输入描述:无*输出描......
  • 第9周项目6-穷举法解决几何问题(1)
    问题及代码:/**Copyright(c)2014,烟台大学计算机学院*Allrightsreserved.*文件名称:MADE23.cpp*作者:孙化龙*完成日期:2014年10月27日*版本号:v1.0**问题描述:白钱百鸡。*输入描述:*输出描述:购买方案。*/#include<iostream>usingnamespacestd;in......