multiset的介绍及使用

1、multiset的介绍

1、multiset是按照特定顺序存储元素的容器,其中元素是可以重复的
2、在multiset在,元素的value也会识别它组成的键值对,multiset元素的值不能在容器中进行修改,但可以插入和删除
3、在内部,multiset按照特定的严格弱排序准则进行排序
4、multiset容器通过key访问单个元素比unordered_multiset容器慢,但当使用迭代器遍历的时候,会得到一个有序序列
5、multiset的底层是二叉搜索树(红黑树)

注:
1、multiset的底层存储的是<value, value>的键值对
2、multiset的插入接口中只需要插入即可
3、multiset与set的区别是multiset中的元素可以重复
4、使用迭代器遍历,可以得到有序的multiset
5、multiset中的元素不可修改
6、multiset的查找的时间复杂度是Olog2N
7、multiset的作用,可以对元素进行排序

2、multiset的构造

函数声明 功能介绍
explicit multiset (const key_compare& comp = key_compare(), const allocator_type& alloc = allocator_type()); 构造空的multiset
template multiset (InputIterator first, InputIterator last, const key_compare& comp = key_compare(), const allocator_type& alloc = allocator_type()); 用[first, last)区间中的元素构造multiset
multiset (const multiset& x); multiset的拷贝构造

3、multiset的迭代器

函数声明 功能介绍
iterator begin() 返回multiset中起始位置元素的迭代器
iterator end() 返回multiset中最后一个元素后面的迭代器
const_iterator cbegin() const 返回multiset中起始位置元素的const迭代器
const_iterator cend() const 返回multiset中最后一个元素后面的const迭代器
reverse_iterator rbegin() 返回multiset第一个元素的反向迭代器,即end
reverse_iterator rend() 返回multiset最后一个元素下一个位置的反向迭代器,即rbegin
const_reverse_iterator crbegin() const 返回multiset第一个元素的反向const迭代器,即cend
const_reverse_iterator crend() const 返回multiset最后一个元素下一个位置的反向const迭代器,即crbegin

4、multiset的容量操作

函数声明 功能介绍
bool empty ( ) const 检测multiset是否为空,空返回true,否则返回true
size_type size() const 返回multiset中有效元素的个数

5、multiset的修改

函数声明 功能介绍
iterator insert (const value_type& x ) 在multiset中插入元素x,实际插入的是<x, x>构成的键值对,如果插入成功,返回<该元素在set中的位置,true>,如果插入失败,说明x在set中已经存在,返回<x在set中的位置,false>
iterator insert ( iterator position, const value_type& x) 在multiset的position位置插入x,实际插入的是<x, x>构成的键值对,注意:position位置只是参考,x最终不一定在该位置
template void insert ( InputIterator first, InputIterator last ); 在multiset中插入[first, last)区间中的元素
void erase ( iterator position ) 删除multiset中position位置上的元素
size_type erase ( const key_type& x ) 删除multiset中值为x的元素,返回删除的元素的个数
void erase ( iterator first, iterator last ) 删除multiset中[first, last)区间中的元素
void swap ( multiset<Key,Compare,Allocator>& st ); 交换multiset中的元素
void clear ( ) 将multiset中的元素清空
iterator find ( const key_type& x ) const 返回multiset中值为x的元素的位置
size_type count ( const key_type& x ) const 返回multiset中值为x的元素的个数

6、multiset的使用

#include <iostream>
#include <set>using namespace std;int main()
{int array[] = { 0, 2, 1, 4, 3, 6, 5, 7, 8, 9, 0, 7, 6, 8, 9, 5, 4, 2, 1, 3 };multiset<int> ms(array, array + sizeof(array) / sizeof(array[0]));for (auto& e : ms){cout << e << " ";}cout << endl;system("pause");return 0;
}

multiset的介绍及使用相关推荐

  1. 【C++】map、set、multimap、multiset的介绍和使用

    我讨厌世俗,也耐得住孤独. 文章目录 一.键值对 二.树形结构的关联式容器 1.set 1.1 set的介绍 1.2 set的使用 1.3 multiset的使用 2.map 2.1 map的介绍 2 ...

  2. C++---set/multiset用法介绍

    set c++ STL标准模板库提供的一种关联式容器,set中元素在底层也存放的是特殊的键值对,但是与map键值对不同的是,set底层的键值对是<value,vlaue>. 特征 底层是红 ...

  3. mapset——C++

    文章目录 1. 关联式容器 2. 键值对 3. 树形结构的关联式容器 3.1 set 3.1.1 set的介绍 3.1.2迭代器+范围for 3.1.3 erase 3.1.4count 3.1.5 ...

  4. C++ map和set

    板书笔记红黑树  (Web 视图) 目录 1. 关联式容器 2. 键值对 3. 树形结构的关联式容器 3.1 set 3.1.1 set的介绍 3.1.2 set的使用 1. set的模板参数列表 2 ...

  5. C++知识总结(内附超详细知识框架图)

    C++知识总结 由于在学习C++的同时博主也在学习Linux系统编程.Linux网络编程以及数据库,所以从开始学习C++到现在结束已经有一年多时间了. C++是博主学习的第一个面向对象的语言,在学习过 ...

  6. STL详解(十)—— set、map、multiset、multimap的介绍及使用

    文章目录 关联式容器 树形结构与哈希结构 键值对 set set的介绍 set的定义方式 set的使用 multiset map map的介绍 map的定义方式 map的插入 map的查找 map的删 ...

  7. Google Guava Collections 使用介绍

    原帖http://www.open-open.com/lib/view/open1325143343733.html 简介: Google Guava Collections 是一个对 Java Co ...

  8. C++知识点32——使用C++标准库(关联容器set和multiset的初始化,赋值,查找,添加,删除与迭代器失效)

    关联容器map和multimap已经在博客https://blog.csdn.net/Master_Cui/article/details/108690877和https://blog.csdn.ne ...

  9. set/multiset/unordered_set和map/multimap/unordered_map基础汇总

    引言 在STL中,有两种很常见的关联容器,分别是set和map,序列容器的元素是按照在容器中的位置来顺序保存和访问的,而关联容器的元素是按关键元素来保存和访问的.所以关联容器经常用在关键字的查找中,效 ...

最新文章

  1. Visual Studio 2010 的新机遇
  2. GPT-3获NeurIPS 2020最佳论文奖,苹果华人学者获经典论文奖
  3. 网站如何布局才能更利于提升用户体验?
  4. python打开csv文件乱码_python脚本解决csv文件用excel打开乱码
  5. java的构造函数详解,Java构造函数与普通函数用法详解
  6. 米尔电子Zynq UltraScale MPSoC核心板资料介绍
  7. MUI侧滑导航:页面组件(本地插件化)
  8. 给计算机系统打补丁,为什么我的电脑需要打补丁?
  9. 推荐好用在线画图网站
  10. ASP.NET4.0尚未在Web服务器上注册
  11. 自适应设计和响应式设计
  12. visio消除直线连接圆弧
  13. itunes一直显示正在验证iphone恢复_换新iPhone了,四个方法轻松解决新旧iPhone的资料迁移...
  14. R语言基础知识(1)-数据类型及其常用方法
  15. (基于Packet Tracer 的校园网络设计方案(计算机网络与课程实验)(三)——Run Time 观察报文传输过程
  16. 上网本安装linux_微软杀死了Linux上网本吗?
  17. c语言打出五子棋棋盘的形状,跪求C语言五子棋悔棋部分实现
  18. unity界面介绍及导入模型
  19. 2022年美容师(中级)上岗证题库模拟考试平台操作
  20. 公司财务管理体制设计的原则

热门文章

  1. Android开发调试必备 - DDMS
  2. 名编辑电子杂志大师教程 | 名编辑输出的*.APP格式杂志不是安装到手机上的吗?
  3. centos的mysql修改root密码_CentOS环境中MySQL修改root密码方法
  4. Apache DolphinScheduler 2.X保姆级源码解析,中国移动工程师揭秘服务调度启动全流程...
  5. 智能充电,共享广告,寻找城市合伙人|拾里郎
  6. bootstrap下拉框组件dropdown及获取元素值
  7. xmlns是什么意思
  8. http协议(三)几种数据传输方式
  9. WPF,ListView设置分组
  10. idea连接MYSQL报错汇总