【C++】STL 容器 - multiset 容器 ( std::multiset 容器简介 | std::multiset 容器 常用操作 api 简介 )

文章目录

  • 一、mulset 容器
    • 1、std::multiset 容器简介
    • 2、代码示例 - multiset 容器
  • 二、std::multiset 容器 常用操作 api 简介
    • 1、常用 api 简介
    • 2、代码示例 - multiset 容器常用操作






一、mulset 容器



1、std::multiset 容器简介


在 C++ 语言 的 标准模板库 ( STL , Standard Template Library ) 中 , 提供了 std::multiset 容器 ,

  • 该容器中的元素的 键值 可以重复 ;
  • 该容器中的元素 是 有序的 , 按照指定的规则 进行排序 ;

向 std::multiset 容器 中 插入元素时 , 不需要验证集合中是否已经存在该元素 , 直接根据排序规则 , 插入到指定的位置 ;

std::multiset 容器 不支持 将 元素插入到指定位置 ;

std::multiset 容器 也不支持 使用 下标位置 直接访问元素 ;


使用 std::multiset 容器前 , 需要 导入 set 头文件 ;

#include "set"

与 set 容器类似的 容器还有 multiset 容器 , 唯一区别是 set 中的元素只能出现一次 , multiset 中的元素可以出现多次 ;


std::multiset 容器 中的元素 不能直接修改 , 只能 先删除 原来的元素 , 然后插入新元素 ;


2、代码示例 - multiset 容器


在下面的代码中 , 创建了一个 multiset 容器 , 存储重复的元素 ;

multiset<int> myMultiSet = { 1, 2, 3, 4, 5, 4, 3, 2, 1 };

上述容器初始化时 , 会自动对容器中的元素进行排序 , 排序后的顺序如下 :

1 1 2 2 3 3 4 4 5

代码示例 :

#include "iostream"
using namespace std;
#include "set"int main() {// 初始化 multiset 容器multiset<int> myMultiSet = { 1, 2, 3, 4, 5, 4, 3, 2, 1 };// 遍历打印 multiset 中的所有元素  for (auto& elem : myMultiSet) {cout << elem << " ";}cout << endl;// 控制台暂停 , 按任意键继续向后执行system("pause");return 0;
};

执行结果 :

1 1 2 2 3 3 4 4 5
请按任意键继续. . .

在这里插入图片描述





二、std::multiset 容器 常用操作 api 简介




1、常用 api 简介


std::multiset 容器 常用操作 : std::multiset 容器 与 std::set 容器 操作 的 接口基本相同 ;

  • insert() : 向 multiset 容器中插入一个或多个元素 ;
  • erase() : 删除 multiset 容器 中的一个或多个元素 ;
  • clear() : 清空 multiset 容器中的所有元素 ;
  • find() : 在 multiset 容器 中查找一个特定元素 ;
  • count() : 返回 multiset 容器 中 特定元素的数量 , 该函数 set 容器中只能返回 0 或 1 , 在 multiset 容器中才有意义 ;
  • lower_bound() : 返回 multiset 容器 中 大于等于 给定键值的元素 的 范围 ;
  • upper_bound() : 返回 multiset 容器 中 大于 给定键值的元素 的 范围 ;
  • equal_range() : 返回 multiset 容器 中 等于 给定键值的元素 的 范围 ;

2、代码示例 - multiset 容器常用操作


代码示例 :

#include "iostream"
using namespace std;
#include "set"void printMS(multiset<int>& ms) {// 遍历打印 multiset 中的所有元素  for (auto& elem : ms) {cout << elem << " ";}cout << endl;
}int main() {// 初始化 multiset 容器multiset<int> myMultiSet = { 1, 2, 3, 4, 5, 4, 3, 2, 1 };// 遍历打印容器printMS(myMultiSet);// 插入元素myMultiSet.insert(9);// 遍历打印容器cout << "插入元素 9 : ";printMS(myMultiSet);// 删除元素myMultiSet.erase(3);// 遍历打印容器cout << "删除元素 3 : ";printMS(myMultiSet);// 获取元素数量int count = myMultiSet.count(2);// 遍历打印容器cout << "元素 2 个数 : " << count << endl;printMS(myMultiSet);// 清空元素myMultiSet.clear();// 遍历打印容器cout << "清空元素 : ";printMS(myMultiSet);// 控制台暂停 , 按任意键继续向后执行system("pause");return 0;
};

执行结果 :

1 1 2 2 3 3 4 4 5
插入元素 9 : 1 1 2 2 3 3 4 4 5 9
删除元素 3 : 1 1 2 2 4 4 5 9
元素 2 个数 : 2
1 1 2 2 4 4 5 9
清空元素 :
请按任意键继续. . .

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/311443.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

街道洗扫车VR虚拟仿真展示创新了培训方式

吸污车用于收集处理城市中的污水、污泥&#xff0c;起到疏通管道的作用&#xff0c;特别是洪涝灾害时是重要的清理工具。吸污车由于内部结构复杂、工艺原理繁琐且造价成本高&#xff0c;因此传统的吸污车作业培训难以达到满意效果。VR虚拟仿真技术的出现&#xff0c;给企业提供…

多线程编程设计模式(单例,阻塞队列,定时器,线程池)

&#x1f495;"只有首先看到事情的可能性&#xff0c;才会有发生的机会。"&#x1f495; 作者&#xff1a;Mylvzi 文章主要内容&#xff1a;多线程编程设计模式(单例,阻塞队列,定时器,线程池) 本文主要讲解多线程编程中常用到的设计模式,包括单例模式,阻塞队列,定时…

2023年度总结——我关注的技术界大事回顾

2023年发生了那么多新闻事件&#xff0c;作为程序员更关注哪些事件呢&#xff0c;这些事件又能引起什么人生感触呢&#xff0c;在这篇文章中你将看到我的想法&#xff0c;那你有什么想法呢 2023技术大事回顾 跟你说话的不一定是人——ChatGPT4开启人工智能新篇章 2023年3月15…

AI产品经理-借力

AI产品经理-借力&#xff1a;学会善用供应商改造自有产品 1.整个项目的工作方法 2.项目启动-行业调研 3.项目启动-供应商选型

Spring Boot快速搭建一个简易商城项目【一展示商城首页篇】

前言&#xff1a;今天我来使用Spring Boot快速搭建一个简易商城项目以下是相关的思路流程&#xff0c;如果有更好的思路&#xff0c;欢迎大佬评论留言&#xff01;&#xff01;&#xff01; 一&#xff0c;实现思路&#xff1a; 创建 Spring Boot 项目&#xff1a; 使用 Spring…

是时候将javax替换为Jakarta了

开始 相信很多朋友在使用新版本的Spring的时候&#xff0c;发现了一些叫jakarta的包&#xff0c;看起来有点陌生。 很多时候&#xff0c;比较纠结不知道该导入哪一个包。 jakarta其实就是之前的javax。 主要JavaEE相关的&#xff0c;从之前javax名字也可以看出来&#xff0…

Unity坦克大战开发全流程——结束场景——失败界面

结束场景——失败界面 在玩家类中重写死亡函数 在beginPanel中锁定鼠标

EOS运行启动 keosd 和 nodeos

EOS运行启动 keosd 和 nodeos 启动keosd:启动nodeos 安装完eosio后keosd和nodeos是一起带着的&#xff0c;我把EOS的运行keosd 和 nodeos官网教程放上来&#xff1a; https://developers.eos.io/welcome/latest/getting-started-guide/local-development-environment/start-nod…

Navicat for MySQL 创建函数——报错1418

解决方法 1查看是否开启了创建函数的功能 输入下面语句查看是否开启了创建函数的功能 show variables like %func%; 下面为创建函数功能为开启的查询结果 如果不是上面的结果可以用下面的语句修改为开启 set GLOBAL log_bin_trust_function_creatorstrue; //或 set GLOBAL …

uni-app 前后端调用实例 基于Springboot

锋哥原创的uni-app视频教程&#xff1a; 2023版uniapp从入门到上天视频教程(Java后端无废话版)&#xff0c;火爆更新中..._哔哩哔哩_bilibili2023版uniapp从入门到上天视频教程(Java后端无废话版)&#xff0c;火爆更新中...共计23条视频&#xff0c;包括&#xff1a;第1讲 uni…

双指针刷题(三)

所有算法文章链接&#xff08;最底部&#xff09; http://t.csdnimg.cn/IbllR 1.有效三角形个数 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 1.分析题意 给一个非负的数组&#xff0c;判断这个数组能组成多少个三角形。 2.解题思路 补充知识…

考研后SpringBoot复习2—容器底层相关注解

考研后SpringBoot复习2 SpringBoot底层注解学习 与容器功能相关的注解与springboot的底层原理密切相关 组件添加注解configuration Spring Ioc容器部分回顾 包括在配置中注册&#xff0c;开启包扫描和注解驱动开发等需要在进行重新的学习回顾 实例 package com.dzu.boot;imp…