STL之二:set/multiset用法详解

12、STL中的multiset使用方法 其实,跟set很像,只需知道重复且用equal_range来获得重复范围的元素,基本上就可以了。其他的了解即可。 阅读详情
使用set或multiset之前,必须加入头文件<set>
Set、multiset都是集合类,差别在与set中不允许有重复元素,multiset中允许有重复元素。
sets和multiset内部以红黑树实现

1)构造函数和析构函数

set c:创建空集合,不包含任何元素

set c(op):以op为排序准则,产生一个空的set
set c1(c2):复制c2中的元素到c1中
set c(const value_type *first, const value_type* last):复制[first, last)之间元素构成新集合
set c(const value_type *first, const value_type* last,op):以op为排序准则,复制[first, last)之间元素构成新集合。
c.~set()销毁所有元素,释放内存



multiset mc:创建空集合,不包含任何元素
multiset mc(op):以op为排序准则,产生一个空的set
multiset c1(c2):复制c2中的元素到c1中
multiset c(const value_type *first, const value_type* last):复制[first, last)之间元素构成新集合
multiset c(const value_type *first, const value_type* last,op):以op为排序准则,复制[first, last)之间元素构成新集合。

c.~set()销毁所有元素,释放内存

#include <iostream>
#include <set>
using namespace std;
int main(){
    set<int> s1;
    set<int,greater<int> > s2;

    for(int i = 1; i <= 6; i++){
        s1.insert(i);
        s2.insert(i);
    }

    set<int> s3(s1);

    //cout<<s1[0]<<endl;
    //cout<<s1.begin()<<endl;这两种输出,编译均会报错
    cout<<"s1:"<<endl;
    for(set<int>::iterator it = s1.begin(); it != s1.end(); it++)
        cout<<*it<<' ';
    cout<<endl;

    cout<<"s2"<<endl;
    for(set<int>::iterator it = s2.begin(); it != s2.end(); it++)
        cout<<*it<<' ';
    cout<<endl;

    cout<<"s3:"<<endl;
    for(set<int>::iterator it = s3.begin(); it != s3.end(); it++)
        cout<<*it<<' ';
    cout<<endl;
    return 0;
}



程序的运行结果如下:



2) 大小、判断空函数

int size() const:返回容器元素个数
bool empty() const:判断容器是否为空,若返回true,表明容器已空

3)增加、删除函数

pair<iterator,bool> insert( x):插入元素x
iterator insert(iterator it,x):在迭代器it处插入元素x
void insert(const value_type *first,const value_type *last):插入[first, last)之间元素
iterator erase(iterator it):删除迭代器指针it处元素
iterator erase(iterator first,iterator last):删除[first, last)之间元素

size_type erase(const Key& key):删除元素值等于key的元素

#include <iostream>
#include <set>
using namespace std;
int main(){
    set<int> s;
    multiset<int> ms;

    for(int i = 6; i > 0; i--){
        s.insert(i);
        ms.insert(i);
    }

    cout<<"s:"<<endl;
    for(set<int>::iterator it = s.begin(); it != s.end(); it++)
        cout<<*it<<' ';
    cout<<endl;

    s.erase(3);
    for(set<int>::iterator it = s.begin(); it != s.end(); it++)
        cout<<*it<<' ';
    cout<<endl;

    s.insert(3);
    for(set<int>::iterator it = s.begin(); it != s.end(); it++)
        cout<<*it<<' ';
    cout<<endl;

    cout<<"ms:"<<endl;
    ms.insert(3);
    for(multiset<int>::iterator it = ms.begin(); it != ms.end(); it++)
        cout<<*it<<' ';
    cout<<endl;

    ms.erase(3);
    for(multiset<int>::iterator it = ms.begin(); it != ms.end(); it++)
        cout<<*it<<' ';
    cout<<endl;

    ms.insert(3);
    ms.insert(3);
    ms.erase(ms.find(3));
    for(multiset<int>::iterator it = ms.begin(); it != ms.end(); it++)
        cout<<*it<<' ';
    cout<<endl;
    return 0;
}

程序的运行结果如下:



4)遍历函数

iterator begin():返回首元素的迭代器指针

iterator end():返回尾元素的迭代器指针

reverse_iterator rbegin():返回尾元素的逆向迭代器指针

reverse_iterator rend():返回首元素前一个位置的迭代器指针

5)操作函数

const_iterator lower_bound(const Key& key):返回容器中大于等于key的迭代器指针
const_iterator upper_bound(const Key& key):返回容器中大于key的迭代器指针

int count(const Key& key) const:返回容器中元素等于key的元素的个数

pair<const_iterator,const_iterator> equal_range(const Key& key) const:返回容器中元素值等于key的迭代指针[first, last)
const_iterator find(const Key& key) const:查找功能,返回元素值等于key的迭代器指针
void swap(set& s):交换集合元素

void swap(multiset& s):交换多集合元素  

#include <iostream>
#include <set>
using namespace std;
int main(){
    set<int> s;

    for(int i = 6; i > 0; i--)
        s.insert(i);

    cout<<"s:"<<endl;
    for(set<int>::iterator it = s.begin(); it != s.end(); it++)
        cout<<*it<<' ';
    cout<<endl;

    s.erase(s.find(3));
    for(set<int>::iterator it = s.begin(); it != s.end(); it++)
        cout<<*it<<' ';
    cout<<endl;

    cout<<*lower_bound(s.begin(),s.end(),3)<<endl;
    if(lower_bound(s.begin(),s.end(),3) != s.end())
        cout<<"Find"<<endl;
    else
        cout<<"Not find"<<endl;

    if(lower_bound(s.begin(),s.end(),6) != s.end())
        cout<<"Find"<<endl;
    else
        cout<<"Not find"<<endl;

    if(lower_bound(s.begin(),s.end(),12) != s.end())
        cout<<"Find"<<endl;
    else
        cout<<"Not find"<<endl;
    return 0;
}


程序的运行结果如下:



有待更新。。。


学Simulink——基于AI融合与智能调度的场实例:联邦学习支持的多卫星协同通信建模 本文介绍了一种基于联邦学习的多卫星协同通信Simulink建模方法。系统采用"星-星协同+星-地协调"架构,每颗卫星本地训练LSTM链路预测模型,地面中心通过FedAvg算法聚合模型参数。建模过程包括卫星通信模型构建、联邦学习机制设计、协同决策系统开发等步骤,支持隐私保护、高效协同和智能决策。仿真结果表明,该方法在预测准确率(89%)、吞吐量(56.7Mbps)等方面优于独立训练模式,接近集中式训练性能。该方案为大规模卫星星座的智能协同提供了仿真验证平台,未来可拓展去中心化联邦学习、异构 阅读详情

相关推荐

Cibersort免疫浸润 --- 详细教程

免疫浸润是指免疫细胞如淋巴细胞、浆细胞、巨噬细胞等进入到组织或器官中,并在这些组织或器官中发挥免疫功能的过程。免疫细胞的浸润可以是炎症反应的一部分,也可以是针对感染、肿瘤或其他疾病的免疫应答的一部分。免疫浸润通过调节免疫反应和炎症反应的程度和类型,起到维护机体免疫平衡和清除异常细胞或病原体的作用。在某些情况下,免疫浸润可能导致炎症反应过度,引起组织损伤,例如自身免疫性疾病。因此,免疫浸润在许多疾病的诊断和治疗中都具有重要的意义。免疫浸润可以通过组织切片染色和免疫组织化学等方法观察和分析。

ZxVSaccount的博客 9105

multiset用法详解

multiset和set都是属于c++中的集合容器 multiset与set的区别:multiset支持重复,而set会去重 set相关知识可参考:set集合详解 头文件 #include< set > 声明和初始化 声明一个multiset,按升序排列,默认升序排列 multiset<int>set1; 等价于: 或 multiset<int,less<int>>set1; 声明一个multiset,按降序排列 multiset<int, g

Anterior_condyle的博客 8182

ANSYS Products19.1下载及安装教程

ANSYS Products19.1下载及安装破解教程 前言 ANSYS软件是美国ANSYS公司研制的大型通用有限元分析(FEA)软件,是世界范围内增长最快的计算机辅助工程(CAE)软件,能与多数计算机辅助设计(CAD,computer Aided design)软件接口,实现数据的共享和交换,如Creo, NASTRAN、Algor、I-DEAS、AutoCAD等。ansys project包括一整套的软件集合,它耦合了CFD模型的前处理,求解器和后处理所需要的相关软件,特比是它的workbench模块,

Mekeater的博客 2万+

Multiset 用法

是一种支持在 lognlognlogn 的时间内完成插入 / 删除 / 查询,以权值为下标的数据结构并且支持重复数字(类似权值线段树)

William_Wang_的博客 2059

rv1126 读取sensor输入,输出到屏幕显示【RK_MPI API接口】

rv1126 libdrm VO

学习记录 1万+

用YOLO11-seg玩转裂缝分割:CBAM注意力魔改+轻量化GhostConv实战

本文详细解析了如何利用YOLO11-seg进行裂缝分割任务,结合CBAM注意力机制和GhostConv轻量化改造,显著提升模型性能。通过实战案例展示从数据准备、模型训练到部署优化的全流程,特别针对小目标检测和复杂背景干扰等挑战提供解决方案,最终实现高效准确的裂缝检测系统。

j0k1l2m3n的博客 287

multiset用法总结

       c++语言中,multiset是&lt;set&gt;库中一个非常有用的类型,它可以看成一个序列,插入一个数,删除一个数都能够在O(logn)的时间内完成,而且他能时刻保证序列中的数是有序的,而且序列中可以存在重复的数。 简单应用: 通过一个程序来看如何使用multiset: #include &lt;string&gt; #include &lt;iostream&gt; ...

二喵君的博客 13万+

threejs加载3dtiles(倾斜摄影)数据

1、安装3dTilesRenderer 插件 使用npm 安装 npm install 3d-tiles-renderer --save 或者去官网下载都行 GitHub - NASA-AMMOS/3DTilesRendererJS: Renderer for 3D Tiles in Javascript using three.js 2、使用 首先引入,在填入3dtiles数据的地址,可以是文件路径也可以是网站路径 const tilesRenderer = new TilesRend..

weixin_39481659的博客 1万+

C++容器set和multiset使用详解

本文介绍了set和multiset的使用,对pair对组也做了简要介绍,同时也使用自定义排序规则对不同数据类型进行了排序操作

weixin_73497355的博客 2109

SAP_MM模块通过CC11 创建物料版本

通过本文,我们了解了 SAP 的[SAP_MM模块通过CC11 创建物料版本]的基本概念和应用方法。当物料主数据、BOM(物料清单)、工艺路线等对象需要进行变更控制时,通过创建“版本”或“更改单”来记录、控制和追溯变更。创建完变更主记录(Change Number)后,可在物料主数据维护时引用它,从而创建物料版本化信息。,在其中可以定义物料、BOM、工艺路线等对象的变更版本信息,从而在系统中实现版本化的物料管理。

我小时候很黑的博客 814

什么是 AI Agent?它和直接调用大模型 API 有什么区别?

什么是 AI Agent?它和直接调用大模型 API 有什么区别?

我哎GIS博客 6476

STL之五:set/multiset用法详解

集合 使用set或multiset之前,必须加入头文件 Set、multiset都是集合类,差别在与set中不允许有重复元素,multiset中允许有重复元素。 sets和multiset内部以平衡二叉树实现 1.   常用函数 1)        构造函数和析构函数 set c:创建空集合,不包含任何元素 set c(op):以op为排序准则,产生一个空

longshengguoji的专栏 5万+

Python 爬虫实战:深入同花顺,抓取股票行情数据,助力投资决策

通过本次 Python 爬虫实战,我们成功地从同花顺抓取了股票行情数据,并进行了存储、处理、分析和可视化展示。在这个过程中,我们不仅掌握了爬虫技术的基本应用,还学会了如何对动态加载的数据进行处理和分析。然而,本次爬虫任务也存在一些局限性,例如仅爬取了部分股票的数据,且未对股票的历史行情进行深入分析。在未来的工作中,我们可以进一步优化爬虫程序,爬取更多股票的数据,并深入分析股票的历史行情走势、技术指标等,为投资者提供更有价值的数据支持。

u014481728的博客 5332

STL:set/multiset用法详解

集合 使用set或multiset之前,必须加入头文件 Set、multiset都是集合类,差别在与set中不允许有重复元素,multiset中允许有重复元素。 sets和multiset内部以平衡二叉树实现 1.   常用函数 1)        构造函数和析构函数 set c:创建空集合,不包含任何元素 set c(op):以op为排序准则,产生一个空

The_star_is_at的博客 486

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

C++学习 STL之五:set/multiset用法详解

集合 使用set或multiset之前,必须加入头文件 Set、multiset都是集合类,差别在与set中不允许有重复元素,multiset中允许有重复元素。 sets和multiset内部以平衡二叉树实现 1.   常用函数 1)        构造函数和析构函数 set c:创建空集合,不包含任何元素 set c(op):以op为排序准则,产生一个空

skdkjxy的专栏 1167

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

C++:STL-容器、算法、迭代器知识点与用法详解-list、set/multiset、pair(3)

本文重点对C++STL的list容器和set容器、multiset、pair容器知识点、函数相关用法进行详解。

Bellwen的博客 539

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

# C++ STL —— set 超详细使用教程

红黑树(平衡二叉搜索树)自动排序(默认升序) + 自动去重增删查:(O(logN))双向迭代器,遍历为中序遍历,所以有序key 不可修改(修改会破坏树结构)set:自动去重、默认升序、key 不可改、(O(logN)) 操作multiset:可重复,其他与 set 一致常用场景:去重、排序、快速查找、判重不能修改元素,只能插入/删除/查找遍历有序,因为是红黑树中序遍历。

2401_89021466的博客 420

【C++STL】set,multiset用法详解

std::set 是 C++ 标准模板库(STL)中的一种有序关联容器。它存储的元素都是唯一的,并且容器会按照元素的值自动进行排序。你可以把它想象成一个数学意义上的集合——每个元素只能出现一次,并且内部是天然有序的。核心特点所有元素在容器中总是按键(即元素本身)的升序排列。排序规则默认使用,即运算符,你也可以通过模板参数指定自定义的比较函数(例如实现降序)。容器中。判断相等的标准是比较结果不为true(即),等价于“等价”而非“相同地址”。插入重复元素时,插入操作会被忽略。

2301_80224556的博客 963
上一篇: STL之一:vector用法详解
下一篇: hihoCoder 1139 二分·二分答案
yphacker
博客等级 码龄12年 199粉丝 540原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值