STL封装之multiset 超全整理

2024-02-04 21:48

本文主要是介绍STL封装之multiset 超全整理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

multiset内部的原理是用平衡二叉树实现,因此无论是查找还是删除操作,时间复杂度都比较低,给我们很大的遍历。
头文件:set

#include <set>

容器命名:multiset<数据类型>容器名称

操作集:
1.插入,删除

	multiset<int> ms;ms.insert(7);//插入元素7ms.insert(10);ms.insert(5);cout << "ms contains:";while (!ms.empty())//empty判断容器ms是不是为空{cout << ' ' << *ms.begin();ms.erase(ms.begin());//删除容器首位置的元素,即(容器中最小的元素)}//ms contains: 5 7 10ms.erase(first, last);//删除容器中在区间[first, last)中的元素ms.erase(pos);//删除容器中第pos个元素

2.查找

	ms.find();//在容器中找到某一个值,找到了返回地址,找不到,返回容器末位置  for (int i=1; i<= 5; i++)ms.insert(i * 10);   // 10 20 30 40 50it=ms.find(50);//找到的是元素地址cout<<"The value of position it is:"<<*it<<endl;//The value of position it is:50ms.erase (it);//删除位置为it的元素ms.erase (ms.find(40));cout << "ms contains:";for (it = ms.begin(); it != ms.end(); it++)cout << ' ' << *it;//ms contains: 10 20 30

3.判断容器是都为空,容器大小,起始终止位置

	ms.empty();//容器为空,返回true,否则返回falsems.size();//返回容器大小ms.clear();//清除容器ms.begin();//返回容器的起始位置ms.end();//返回容器的结束位置

4.计算某一个元素出现的次数

	int myints[]= {73,12,22,73,73,12};//数某一个数出现的次数multiset<int> ms (myints,myints + 6);cout << "73 appears " << ms.count(73) << " times in ms.\n";//73 appears 3 times in ms.cout << "12 appears " << ms.count(12) << " times in ms.\n";//12 appears 2 times in ms.

5.输出容器中的所有元素

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

6.swap函数

	
int myints3[]= {1,2,3,4,5,6};multiset<int> first(myints3, myints3 + 3);     // 4,19,72multiset<int> second(myints3 + 3, myints3 + 6);  // 20,20,36first.swap(second);cout << "first contains:";for (multiset<int>::iterator it = first.begin(); it != first.end(); it++)cout << *it<<" ";cout << "\nsecond contains:";for (multiset<int>::iterator it = second.begin(); it != second.end(); it++)cout << *it<<" ";//first contains:4 5 6//second contains:1 2 3

这篇关于STL封装之multiset 超全整理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/678884

相关文章

C++ STL-string类底层实现过程

《C++STL-string类底层实现过程》本文实现了一个简易的string类,涵盖动态数组存储、深拷贝机制、迭代器支持、容量调整、字符串修改、运算符重载等功能,模拟标准string核心特性,重点强... 目录实现框架一、默认成员函数1.默认构造函数2.构造函数3.拷贝构造函数(重点)4.赋值运算符重载函数

Python用Flask封装API及调用详解

《Python用Flask封装API及调用详解》本文介绍Flask的优势(轻量、灵活、易扩展),对比GET/POST表单/JSON请求方式,涵盖错误处理、开发建议及生产环境部署注意事项... 目录一、Flask的优势一、基础设置二、GET请求方式服务端代码客户端调用三、POST表单方式服务端代码客户端调用四

MyBatis的xml中字符串类型判空与非字符串类型判空处理方式(最新整理)

《MyBatis的xml中字符串类型判空与非字符串类型判空处理方式(最新整理)》本文给大家介绍MyBatis的xml中字符串类型判空与非字符串类型判空处理方式,本文给大家介绍的非常详细,对大家的学习或... 目录完整 Hutool 写法版本对比优化为什么status变成Long?为什么 price 没事?怎

Python按照24个实用大方向精选的上千种工具库汇总整理

《Python按照24个实用大方向精选的上千种工具库汇总整理》本文整理了Python生态中近千个库,涵盖数据处理、图像处理、网络开发、Web框架、人工智能、科学计算、GUI工具、测试框架、环境管理等多... 目录1、数据处理文本处理特殊文本处理html/XML 解析文件处理配置文件处理文档相关日志管理日期和

Python38个游戏开发库整理汇总

《Python38个游戏开发库整理汇总》文章介绍了多种Python游戏开发库,涵盖2D/3D游戏开发、多人游戏框架及视觉小说引擎,适合不同需求的开发者入门,强调跨平台支持与易用性,并鼓励读者交流反馈以... 目录PyGameCocos2dPySoyPyOgrepygletPanda3DBlenderFife

Python自动化批量重命名与整理文件系统

《Python自动化批量重命名与整理文件系统》这篇文章主要为大家详细介绍了如何使用Python实现一个强大的文件批量重命名与整理工具,帮助开发者自动化这一繁琐过程,有需要的小伙伴可以了解下... 目录简介环境准备项目功能概述代码详细解析1. 导入必要的库2. 配置参数设置3. 创建日志系统4. 安全文件名处

MySQL 迁移至 Doris 最佳实践方案(最新整理)

《MySQL迁移至Doris最佳实践方案(最新整理)》本文将深入剖析三种经过实践验证的MySQL迁移至Doris的最佳方案,涵盖全量迁移、增量同步、混合迁移以及基于CDC(ChangeData... 目录一、China编程JDBC Catalog 联邦查询方案(适合跨库实时查询)1. 方案概述2. 环境要求3.

SpringSecurity整合redission序列化问题小结(最新整理)

《SpringSecurity整合redission序列化问题小结(最新整理)》文章详解SpringSecurity整合Redisson时的序列化问题,指出需排除官方Jackson依赖,通过自定义反序... 目录1. 前言2. Redission配置2.1 RedissonProperties2.2 Red

MySQL 多列 IN 查询之语法、性能与实战技巧(最新整理)

《MySQL多列IN查询之语法、性能与实战技巧(最新整理)》本文详解MySQL多列IN查询,对比传统OR写法,强调其简洁高效,适合批量匹配复合键,通过联合索引、分批次优化提升性能,兼容多种数据库... 目录一、基础语法:多列 IN 的两种写法1. 直接值列表2. 子查询二、对比传统 OR 的写法三、性能分析

Javaee多线程之进程和线程之间的区别和联系(最新整理)

《Javaee多线程之进程和线程之间的区别和联系(最新整理)》进程是资源分配单位,线程是调度执行单位,共享资源更高效,创建线程五种方式:继承Thread、Runnable接口、匿名类、lambda,r... 目录进程和线程进程线程进程和线程的区别创建线程的五种写法继承Thread,重写run实现Runnab