C++中set 和multiset 容器类小总结

    C++中有两个容器类,对于做编程题的同学,遇到集合问题直接调用是十分方便的,下面我来介绍C++里面的两个容器类

,它们分别是set 和multiset。

 

一.set 容器

set是一个集合。

需要在c++的编译环境中使用,需要的头文件是#include<set>

创建一个名为a的整型set容器的方法是set<int>a(其它类型类似)

 

常用的方法(可以直接调用):

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

clear() 清除所有元素

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

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

end() 返回指向最后一个元素之后的迭代器,不是最后一个元素

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

erase() 删除集合中的元素

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

get_allocator() 返回集合的分配器

insert() 在集合中插入元素

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

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

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

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

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

size() 集合中元素的数目

swap() 交换两个集合变量

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

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

 

二.multiset容器

Multiset的中文名是多重集合

其实就是集合的扩展版。唯一的不同是集合中一个值只能出现一次,而多重集合中一个值可以出现多次。

需要在c++的编译环境中使用,需要的头文件是#include<set>

创建一个名为a的整型multiset容器的方法是multiset<int>a(其它类型类似)

 

multiset的方法和set相同,唯一的区别就是multiset可以储存很多相同的值

 

三:set与multiset容器的区别?

Set、multiset都是集合类,差别在与set中不允许有重复元素,multiset中允许有重复元素。

 

 

四.什么时候适合用set,什么时候适合用multiset?

 

什么时候适合用multiset?

当然是需要用set,但是又允许重复key存在的时候了。

什么时候适合用set?

需要随时往容器中插入元素,随时对元素进行快速查找,又需要按某种顺序对元素进行遍历的时候

 

 

 

 

 

时间: 2024-12-30 18:24:01

C++中set 和multiset 容器类小总结的相关文章

如何在Access2007表中同时显示明细、小计、总计

问题描述: 如何在Access2007 表中同时显示明细.小计.总计? ID fullname pay 2 a ¥500.00 4 a ¥600.00 5 a ¥700.00 6 b ¥800.00 7 b ¥55.00 有以上格式的表格,要根据 FULLNAME 做小计,然后全部的做总计,变成以下格式 fullname pay a ¥700.00 a ¥600.00 a ¥500.00 a 小计 ¥1,800.00 b ¥55.00 b ¥800.00 b 小计 ¥855.00 总计 ¥2,6

SQL开发中容易忽视的一些小地方(五)

背景: 索引分类:众所周知,索引分为聚集索引和非聚集索引. 索引优点:加速数据查询. 问题:然而我们真的清楚索引的应用吗?你写的查询语句是否能充分应用上索引,或者说你如何设计你的索引让它更高效? 经历:以前本人只知道索引的好处,但是是否能够真正让它发挥作用,并无太多理论,为些本人做了些DEMO,来简单说明下什么情况下才能充分利用索引. 案例: 这里建立一个学生表:有如下字段,此时表中没有建立任何索引.CREATE TABLE [dbo].[student]( [ID] [int] IDENTIT

SQL开发中容易忽视的一些小地方(四)

非聚集索引结构:1:非聚集索引与聚集索引具有相同的 B 树结构,它们之间的显著差别在于以下两点: * 基础表的数据行不按非聚集键的顺序排序和存储. * 非聚集索引的叶层是由索引页而不是由数据页组成. 2:非聚集索引行中的行定位器或是指向行的指针,或是行的聚集索引键,如下所述: * 如果表是堆(意味着该表没有聚集索引),则行定位器是指向行的指针.该指针由文件标识符 (ID).页码和页上的行数生成.整个指针称为行 ID (RID). * 如果表有聚集索引或索引视图上有聚集索引,则行定位器是行的聚集索

SQL开发中容易忽视的一些小地方(三)

索引定义:微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引.簇集索引)和非聚集索引(nonclustered index,也称非聚类索引.非簇集索引). SARG的定义:用于限制搜索的一个操作,因为它通常是指一个特定的匹配,一个值得范围内的匹配或者两个以上条件的AND连接.形式如下: 列名 操作符 <常数 或 变量>或<常数 或 变量> 操作符列名列名可以出现在操作符的一边,而常数或变量出现在操作符的另一边. SARG的意义:如果一个

SQL开发中容易忽视的一些小地方(二)

目的:继上一篇:SQL开发中容易忽视的一些小地方(一) 总结SQL中的null用法后,本文我将说说表联接查询. 为了说明问题,我创建了两个表,分别是学生信息表(student),班级表(classInfo).相关字段说明本人以SQL创建脚本说明: 测试环境:SQL2005 CREATE TABLE [dbo].[student]( [ID] [int] IDENTITY(1,1) NOT NULL, [sUserName] [nchar](10) COLLATE Chinese_PRC_CI_A

PHP网站开发中常用的8个小技巧

 这篇文章主要介绍了PHP网站开发中常用的8个小技巧,本文讲解了命名.使用.PHP判断Form表单是否提交.PHP 获取字符串长度.PHP超全局对象等内容,需要的朋友可以参考下     PHP是一种用于创建动态WEB页面的服务端脚本语言.如同ASP和ColdFusion,用户可以混合使用PHP和HTML编写WEB页面,当访 问者浏览到该页面时,服务端会首先对页面中的PHP命令进行处理,然后把处理后的结果连同HTML内容一起传送到访问端的浏览器.但是与ASP或 ColdFusion不同,PHP是一

Win8系统电脑在路由器中查看宽带密码的小技巧

Win8系统电脑在路由器中查看宽带密码的小技巧  操作步骤: 1.在IE中输入路由器IP地址:192.168.0.1 或192.168.1.1.192.168.2.1 这个自己家的自己有自己的IP地址,就是管理路由器的ip ; 2.输入路由器登陆帐号和密码,默认是admin admin; 3.就是导出路由器配置或者叫路由器备份.各种牌子估计叫法都不一样.然后导出一个文件cfg的文件到一个路径(D盘之类的); 4.进入d盘找到这个文件右键 → 打开方式 → 记事本. 以上便是Win8系统电脑在路由

win7在日常生活中经常遇到的一些小问题

在使用win7过程中,难免会遇到一些小问题,而遇到问题要怎么办呢?下面小编和大家分享下,我在使用win7中遇到过的一些小问题. 1 使用QQ导致电脑蓝屏 这个只有在使用非常老版本的QQ才会出现,如果你没出现过可以去尝试下. 2 截图花屏 很多时候你会发现,Windows 7本身显示没问题,但无论是用Print Screen键,还是其他截图工具,所得的图中会有一部分花屏,有时是一条,有时是一块.这主要是Windows 7自带的显卡驱动程序不完善所造成的,解决方法是下载并安装最新版的显卡驱动,一般都

linux系统维护 脚本-redhat中如何快速删除大量小文件

问题描述 redhat中如何快速删除大量小文件 业务系统每天会在一个目录下产生大约300万个临时文件,每个文件大约100K左右,自己写了一个脚本文件,每天定时删除,最近由于业务量的增长,这个脚本已经不能胜任这个工作了,请问有没有更好的办法来删除这些文件? 附上脚本文件代码 #!/bin/bash time=date -d "3 day ago" "+%Y%m%d" date > /root/date_start_t.txt ls /backup/fr >