【STL】map容器

news/2024/4/24 19:48:01/

1、map容

  • map中所有元素都是pair组成
  • pair中第一个元素为key(键值),起到索引作用,第二个元素为value(实值)
  • 所有元素都会根据元素的键值自动 排序

map/multimap属于关联式容器,底层结构由二叉树实现。
优点:可以根据key值快速找到value值。
map容器不允许容器中有重复的key值,而multimap允许重复Key。

2、map构造和赋值

  • map<type,type>mp;默认构造
  • map(const map &mp);拷贝构造
void printMap(map<int, char>& m) {for (map<int, char>::iterator it = m.begin(); it != m.end(); it++) {cout <<"key=" << it->first << " value =" <<it->second<< endl;}
}
void test02() {map<int,char>m;m.insert(pair<int,char>(1, 'a'));m.insert(pair<int,char>(3, 'c'));m.insert(pair<int,char>(2, 'b'));printMap(m); //会按照key自动排序,由小到大map<int, char>m1(m);map<int, char>m2;m2 = m1;printMap(m2);
}

3、map大小和交换

  • size()
  • empty()
  • swap()
map<int,char>m;m.insert(pair<int,char>(1, 'a'));m.insert(pair<int,char>(3, 'c'));m.insert(pair<int,char>(2, 'b'));printMap(m); //会按照key自动排序,由小到大if (!m.empty()) {cout << m.size() << endl;cout << sizeof(m) << endl;}map<int, char>m1;m1.insert(pair<int, char>(2, '3'));m1.insert(pair<int, char>(4, 'c'));m1.insert(pair<int, char>(6, 'q'));m.swap(m1);printMap(m1);

4、map插入和删除

  • insert();
  • clear();
  • erase(pos);
  • erase(beg,end);
  • erase(key);
	map<int,char>m;m.insert(pair<int,char>(1, 'a'));m.insert(pair<int,char>(3, 'c'));m.insert(pair<int,char>(2, 'b'));  //四种插入方式m.insert(make_pair(4, 'd'));m.insert(map<int,char>::value_type(5,'e'));m[6]='f';cout << m[6] << endl;printMap(m); //会按照key自动排序,由小到大m.erase(m.begin());m.erase(2);m.erase(m.begin(), m.end());printMap(m);

5、map查找和统计

  • find(key);
  • count(key); 返回0或1
map<int, char>::iterator it = m.find(2);
cout << it->first<<it->second;
cout<<m.count(3);

6、map排序

map默认按照key值排序
1、内置数据类型排序

class CompareInt {
public:bool operator()(int a, int b) const{return a > b;}
};void printMap(map<int, int, CompareInt>& m) {for (map<int, int, CompareInt>::iterator it = m.begin(); it != m.end(); it++) {cout << "key=" << it->first << " value:" << " name=" << it->second << endl;}
}void test03() {map<int, int, CompareInt>m;m.insert(pair<int,int>(2, 4));m.insert(pair<int,int>(5, 4));m.insert(pair<int, int>(1, 4));m.insert(pair<int, int>(3, 4));printMap(m);
}

2、自定义数据类型排序

class Person {
public:string name;int age;Person(string m_name, int m_age) {name = m_name;age = m_age;}
};
class Mycompare {
public:bool operator()(const Person& p1, const Person& p2) const {return p1.age > p2.age;}bool operator()(int a, int b) const {return a > b;}
};
void printMap(map<int, Person, Mycompare>& m) {for (map<int, Person, Mycompare>::iterator it = m.begin(); it != m.end(); it++) {cout << "key=" << it->first << " value:" << " name=" << it->second.name<<" age=" << it->second.age<<endl;}
}void test02() {map<int, Person, Mycompare>m;Person p1("曹操", 1);Person p2("曹植", 5);Person p3("曹冲", 2);Person p4("曹丕", 6);Person p5("曹昂", 3);m.insert(pair<int, Person>(p1.age, p1));m.insert(pair<int, Person>(p2.age, p2));m.insert(pair<int, Person>(p3.age, p3));m.insert(pair<int, Person>(p4.age, p4));m.insert(pair<int, Person>(p5.age, p5));printMap(m);
}

http://www.ppmy.cn/news/48029.html

相关文章

8万字智慧旅游景区信息化建设方案word

本资料来源公开网络&#xff0c;仅供个人学习&#xff0c;请勿商用&#xff0c;如有侵权请联系删除。 1.1. 整体建设框架 XXXXXX智慧景区旅游建设对于全面整合景区旅游资源&#xff0c;提升景区旅游产业发展能级&#xff0c;进一步增强景区旅游业的核心竞争力具有十分重要的支…

《Vue3实战》 第五章 计算、监听属性

《Vue3实战》篇章整体栏目 ————————————————————————————— 【第一章】node.js/npm安装、配置 【第二章】创建项目和目录结构 【第三章】基础语法 【第四章】条件语句、循环语句 【第五章】计算、监听属性 【第六章】样式绑定和事件处理 【第七章】…

Ae:摄像机设置

Ae菜单&#xff1a;图层/摄像机设置 Camera Settings 快捷键&#xff1a;Ctrl Shift Y 新建摄像机图层时&#xff0c;首先会弹出摄像机设置 Camera Settings对话框。 经典 3D 渲染器时的摄像机设置 Cinema 4D 渲染器时的摄像机设置 类型 Type 有两种类型的摄像机供选择。 提…

【计算机视觉 | 图像分割】Segment Anything论文讲解

文章目录 一、前言二、论文出发点三、创新思路四、方法4.1 Segment Anything Task4.2 Segment Anything Model4.3 Segment Anything Data Engine4.4 Segment Anything Dataset 五、结果 一、前言 论文&#xff1a;https://arxiv.org/pdf/2304.02643.pdf 项目&#xff1a;https…

数据库基础篇 《2. MySQL环境搭建》

目录 1. MySQL的卸载 步骤1&#xff1a;停止MySQL服务 步骤2&#xff1a;软件的卸载 步骤3&#xff1a;残余文件的清理 ​编辑2. MySQL的下载、安装、配置 2.1 MySQL的4大版本 2.2 软件的下载 2.3 MySQL8.0 版本的安装 2.4 配置MySQL8.0 2.5 配置MySQL8.0 环境变量 …

Python办公自动化之PostgreSQL篇2——利用Python连接PostgreSQL并读取一张表

在上一篇我们已经安装好了最新的PostgreSQL&#xff0c;以及最方便的可视化工具&#xff0c;Navicat 如果错过的小伙伴&#xff0c;可以去上一篇查看&#xff1a;点我查看 今天我们来用Python连接一下PostgreSQL&#xff0c;然后准备一张测试表&#xff0c;导入PostgreSQL&am…

数据爬虫爬数据时常遇到的问题

第一&#xff0c;可能不能直接通过pyppeteer简单的直接page.querySelectorAll()获取所有元素然后直接 str(await (await element_songer_name.getProperty("title")).jsonValue()) 得到数据值&#xff0c;主要原因可能是#document问题&#xff0c; 所以遇到这个问题…

4.13~4.17(PE文件结构预习+hook+进程hellow)

常见PE文件结构 常见的PE文件&#xff1a;exe、dll、sys Ag&#xff1a; exe就不用多说&#xff0c;就是可执行文件 dll动态链接库 对于 Windows 操作系统&#xff0c;操作系统的大部分功能都由 DLL 提供 &#xff08;https://learn.microsoft.com/zh-cn/troubleshoot/window…

第一讲 初识Python

Python简介 Python&#xff08;英式发音&#xff1a;/ˈpaɪθən/&#xff1b;美式发音&#xff1a;/ˈpaɪθɑːn/&#xff09;是由荷兰人吉多范罗苏姆&#xff08;Guido von Rossum&#xff09;发明的一种编程语言&#xff0c;是目前世界上最受欢迎和拥有最多用户群体的编…

第二十二章 案例TodoList之鼠标事件

本小节&#xff0c;我们需要使用鼠标事件&#xff0c;给Item组件添加背景颜色&#xff0c;并显示删除按钮。 添加鼠标移入和移出事件 import React, { Component } from react import "./index.css" export default class Item extends Component {// 初始化状态数…

.Net中的标识框架Identity

中间件&#xff1a; 1、Authentication对访问者的用户身份进行验证&#xff0c;“用户是否登录成功”。 2、Authorization验证访问者的用户身份是否有对资源访问的访问权限&#xff0c;“用户是否有权限访问这个地址”。 简单描述 1、标识&#xff08;Identity&#xff09;框架…

轻松掌握K8S使用kubectl操作配置文件挂载ConfigMap和密钥Secret知识点05

1、挂载应用配置文件配置集ConfigMap 当有许多应用如redis、mysql&#xff0c;希望将它的配置文件挂载出去&#xff0c;以便随时修改&#xff0c;可以用ConfigMap配置集 具体用法查看使用命令行操作里的 3、ConfigMap配置集实战 2、挂载应用配置文件的敏感信息Secret Secre…

Linux 系统调用深思:从原理到实战

Linux 系统调用揭秘&#xff1a;从原理到实战&#xff08;Demystifying Linux System Calls: From Principles to Practice&#xff09; 引言&#xff08;Introduction&#xff09;系统调用的概念&#xff08;Concept of System Calls&#xff09;Linux操作系统与系统调用的关系…

使用element-plus组件,修改date-picker默认样式

使用深度选择器来修改子组件的样式&#xff0c;今天遇到一个需求&#xff0c;在el-drawer中嵌入的el-date-picker&#xff0c;再一次总结一下深度选择器的用法&#xff0c;需求如下&#xff1a; template内容&#xff1a; <el-drawer size"70%" v-model"dr…

Golang微服务一把嗦 用户微服务集成主流最新go技术栈

声明&#xff1a;此文章为博主个人学习记录&#xff0c;仅供学习和交流&#xff0c;如有侵权请联系博主。 前言 前段时间&#xff0c;因为本地k8s环境一直出问题&#xff0c;线上云环境也用不起&#xff0c;&#xff08;后面搞定了再慢慢学习&#xff09;所以就暂时搁置了k8s学…

【C/C++】GDB 快速定位虚函数表并获取详情信息

文章目录 在GDB中&#xff0c;可以使用以下命令来查看虚函数表&#xff1a; 首先&#xff0c;使用GDB调试程序&#xff0c;并在程序运行到需要查看虚函数表的地方停下来。 然后&#xff0c;使用命令“p /x (long)object”来查看对象的地址。这个命令会输出对象的地址&#xff…

DHCP原理与配置

目录 一、DHCP工作原理 1&#xff09;了解DHCP服务 使用DHCP的好处 DHCP的分配方式 2&#xff09;DHCP的租约过程 分为四个步骤 二、DHCP服务器的配置 1&#xff09;检查并且安装dhcp有关软件包 2&#xff09;查看系统的配置文件&#xff0c;并且利用好官方给的参考案…

一起学 Java(三) 集合框架、数据结构、泛型

一、Java 集合框架 集合框架是一个用来代表和操纵集合的统一架构。所有的集合框架都包含如下内容&#xff1a; 接口&#xff1a;是代表集合的抽象数据类型。接口允许集合独立操纵其代表的细节。在面向对象的语言&#xff0c;接口通常形成一个层次。实现&#xff08;类&#x…

注册功能编写--购物车拓展

教程给出的模板在登录板块的功能不够齐全&#xff0c;正常情况下我们还应该有一个注册功能。所以这次我来写一个注册功能。 1、给登录的jsp页面添加相关超链接按钮&#xff0c;顺便把页面内容通过css改一改。然后再写一个负责注册的jsp 2、在userdao中再写一个方法负责给user表…

leetcode刷题--辅助工具

idea插件 插件商店搜索leetcode&#xff0c;可以让你利用idea调试leetcode的题目 插件首先需要填写用户名密码登录&#xff0c;登录上就可以在idea搜题、做题、提交等 注意&#xff1a; 一些版本登录可能登录失败&#xff0c;解决方法是换leetcode地址为leetcode.cn。 有些可…