map容器的基本概念及常用成员函数

map(字典)的基本概念

map是一个将一个值映射到另一个值的一种数据结构。(即两个值之间有一一对应关系)。

map的所有元素都是pair类型,pair中的第一个元素称为键值(key)第二个元素称为实值(value)。key和value具有一一对应关系。在map插入元素时,所有元素都会按照key的大小进行排序。

本质

map本质上是一个关联式容器,其底层的内部实现为二叉树

优点

可以根据key值快速找到value值

map与multimap的区别:

map不允许有重复的键值,但允许有重复的实值

multimap允许有重复的键值

map的构造与赋值操作

T1,T2中填内置数据类型或自定义数据类型

eg:

#include<iostream>
using namespace std;
#include<map>
#include<string>
void printMap(const map<string,int>&m)
{for (map<string, int>::const_iterator it = m.begin(); it != m.end(); it++){cout << it->first << "\t" << it->second << endl;}
}
int main()
{map<string, int>m;//默认构造m.insert(pair<string, int>("张三", 18));//pair<string, int>相当于创建一个匿名对象,将匿名对象的值插入到m中m.insert({ "李四",20 });//相当于直接指定插入一个数据printMap(m);map<string, int>m1(m);//拷贝构造printMap(m1);map<string, int>m2 = m1;//赋值操作printMap(m2);return 0;
}

 map容器的大小和交换操作

与前面所学的容器操作类似,熟练掌握即可

map的插入和删除操作

eg:

#include<iostream>
using namespace std;
#include<map>
#include<string>
void printMap(const map<string,int>&m)
{for (map<string, int>::const_iterator it = m.begin(); it != m.end(); it++){cout << it->first << "\t" << it->second << endl;}
}
int main()
{map<string, int>m;//默认构造m.insert(pair<string, int>("张三", 18));//pair<string, int>相当于创建一个匿名对象,将匿名对象的值插入到m中m.insert({ "李四",20 });//相当于直接指定插入一个数据m.insert(make_pair("王五", 30));//用make_pair方式插入一个键值对m["赵六"];//map支持用[]运算符插入数据。但使用时需注意:若map中有对应键值,则返回实值。若没有,则map会创建相应键值,并将值//实值赋为0printMap(m);m.erase(m.begin());//删除第一个元素m.erase("赵六");//删除赵六printMap(m);//m.erase(m.begin(), m.end());相当于m.clear()m.clear();return 0;
}

map查找和统计操作

eg:

#include<iostream>
using namespace std;
#include<map>
#include<string>
void printMap(const map<string,int>&m)
{for (map<string, int>::const_iterator it = m.begin(); it != m.end(); it++){cout << it->first << "\t" << it->second << endl;}
}
int main()
{map<string, int>m;//默认构造m.insert(pair<string, int>("张三", 18));//pair<string, int>相当于创建一个匿名对象,将匿名对象的值插入到m中m.insert({ "李四",20 });//相当于直接指定插入一个数据m.insert(make_pair("王五", 30));//用make_pair方式插入一个键值对m["赵六"];//map支持用[]运算符插入数据。但使用时需注意:若map中有对应键值,则返回实值。若没有,则map会创建相应键值,并将值//实值赋为0printMap(m);//map<string,int>::iterator ret=m.find("张三");//用迭代器接收查找到的键的位置,若找不到,则迭代器最终值为m.end//if (ret == m.end())//{//	cout << "未找到该元素" << endl;//}//else//{//	cout << "找到该元素,该元素的实值为:" << ret->second << endl;//}//同样可以用count来判断容器中是否有该元素if (m.count("张三") == 0){cout << "未找到该元素" << endl;}else{cout << "找到该元素,该元素的实值为:" << m["张三"] << endl;}return 0;
}

map容器的排序操作

map默认的排序规则是从小到大排,而我们可以利用仿函数来更改map的排序规则

使用仿函数改变排序规则需注意两点:

1、创建的类成员排序函数的权限必须为public

2、在重载()的函数中,需要在参数列表后加const,否则会报错

eg:

#include<iostream>
using namespace std;
#include<map>
#include<string>
class myCompare
{
public://注意1bool operator()(int v1,int v2)const//注意2{return v1 > v2;//采用降序规则}
};
int main()
{map<int, int, myCompare>m;//默认构造m.insert(make_pair(1,10));m.insert(make_pair(2, 20));m.insert(make_pair(3, 30));m.insert(make_pair(5, 50));m.insert(make_pair(4, 40));for (map<int, int, myCompare>::const_iterator it = m.begin(); it != m.end(); it++){cout << it->first << "\t" << it->second << endl;}return 0;
}

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

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

相关文章

OpenAI开放新功能,可通过@一键调用任意GPTs

人工智能技术的快速发展为我们的生活带来了许多便利和创新。作为人工智能领域的重要成果之一&#xff0c;OpenAI的GPT&#xff08;Generative Pre-trained Transformer&#xff09;模型在自然语言处理方面取得了巨大的突破。 近日&#xff0c;OpenAI宣布推出了GPT Mentions功能…

解析Python中HTTP代理的常见问题

在Python编程中&#xff0c;HTTP代理是一个经常被提及的概念&#xff0c;尤其在处理网络请求和爬虫时。但与此同时&#xff0c;使用HTTP代理也经常会遇到一些令人头疼的问题。接下来&#xff0c;就让我们一起解析一下Python中使用HTTP代理时常见的那些问题。 1. 代理服务器无响…

大学医学统计学搜题软件?大学生必备应用:推荐几款高效的搜题工具 #经验分享#知识分享#笔记

大学生活中&#xff0c;选择适合自己的学习工具能够提高学习效率&#xff0c;让学习更加轻松愉快。 1.灵兔搜题 这是一个公众号 搜题速度极快&#xff0c;秒级响应&#xff01;不再浪费时间&#xff0c;高效解决难题。 下方附上一些测试的试题及答案 1、拟南芥中C类基因发生…

centos7安装oracle

1 安装虚拟机 设置4G内存&#xff0c;硬盘40G 2 配置网络环境 2.1配置主机名 # vi /etc/hostname 修改为 oracle2.2 配置IP地址 # vi /etc/sysconfig/network-scripts/ifcfg-ens33 修改 BOOTPROTO"static" ONBOOT"yes" IPADDR192.168.109.110 NETMAS…

VMware无法检测到插入的USB设备,虚拟机插拔USB无反应

原本正常使用的VMware虚拟机&#xff0c;在进行了重装软件后&#xff0c;发现虚拟机插拔USB设备都无法检测到&#xff0c;没有任何的反应和提示。 通过一系列的操作发现&#xff0c;在新安装了VMware workstation 软件后&#xff0c;存在一定的概率性会发生VMware虚拟机无法自…

java并发执行批量插入

java并发执行批量插入 1、mybatis-plus批量插入 long start System.currentTimeMillis();int num 5000; //一次批量插入的数量int j 0;for (int i 0;i<20;i){List<User> userList new ArrayList<>();while (true){j;User user new User();user.setUserP…

【论文笔记】GS++: Error Analyzing and Optimal Gaussian Splatting

原文链接&#xff1a;https://browse.arxiv.org/abs/2402.00752 1. 引言 许多基于3D高斯溅射&#xff08;3D-GS&#xff09;的方法针对稀疏视图场景的鲁棒性、性能和存储效率进行增强&#xff0c;但没有专门处理高斯投影的误差。 3D-GS以一组图像和相机通过SfM校准产生的点云…

LabVIEW电能质量监测系统

LabVIEW电能质量监测系统 随着全球能源需求的增加以及能源危机的加剧&#xff0c;对电能的有效利用和质量监控变得越来越重要。特别是在电力系统中&#xff0c;电能质量的监测对于保证电力设备的稳定运行和提高能源利用效率具有重要意义。采用LabVIEW软件开发了一套高效的电能…

使用PHPStudy搭建Cloudreve网盘服务

文章目录 1、前言2、本地网站搭建2.1 环境使用2.2 支持组件选择2.3 网页安装2.4 测试和使用2.5 问题解决 3、本地网页发布3.1 cpolar云端设置3.2 cpolar本地设置 4、公网访问测试5、结语 1、前言 自云存储概念兴起已经有段时间了&#xff0c;各互联网大厂也纷纷加入战局&#…

充电桩项目实战:短信功能 分布式限流

你好&#xff0c;我是田哥 最近&#xff0c;我在对充电桩项目进行微服务升级中&#xff0c;肯定会遇到一些问题 前面分享了&#xff1a;充电桩项目实战&#xff1a;搞定多数据源&#xff01; 题外话&#xff1a;如果想年后找到更好的工作&#xff0c;推荐看这篇文章&#xff1a…

高端酒店宴会包间桌位预定小程序h5开源版开发

高端酒店宴会包间桌位预定小程序h5开源版开发 餐厅预定桌位系统&#xff0c;支持多店切换预约&#xff0c;提供全部前后台无加密源代码和数据库 功能特性 为你介绍餐厅预订系统的功能特性 多端适配 采用uniapp,目前适配小程序和微信H5 多店铺 支持多店铺预定 付费和免费预定 支…

『运维备忘录』之 Systemd 命令详解

运维人员不仅要熟悉操作系统、服务器、网络等只是&#xff0c;甚至对于开发相关的也要有所了解。很多运维工作者可能一时半会记不住那么多命令、代码、方法、原理或者用法等等。这里我将结合自身工作&#xff0c;持续给大家更新运维工作所需要接触到的知识点&#xff0c;希望大…

11月最新版付费进群源码自动定位+开源

Nginx 1.22.1 php5.6 mysql5.6 数据库配置&#xff1a;/config/database.php 配置后台域名&#xff1a;config/extra/ip.php 设置伪静态thinkphp 后台账号88886666 密码12345 代码结构 关键代码剖析 <?php // ----------------------------------------------------…

continue语句

一、continue语句 1、continue语句介绍 2、continue语句流程图 3、快速入门案例 4、continue语句的标签

毫米波雷达在汽车领域的原理、优势和未来趋势

1 毫米波雷达的原理 汽车引入毫米波雷达最初主要是为了实现盲点监测和定距巡航。毫米波实质上是电磁波&#xff0c;其频段位于无线电和可见光、红外线之间&#xff0c;频率范围为10GHz-200GHz。工作原理类似一般雷达&#xff0c;通过发射无线电波并接收回波&#xff0c;利用障…

理论与实战:一篇看懂Python词云

实现原理 导入一篇txt文档&#xff0c;使用jieba库对文档中的文字进行分词&#xff0c;计算各个词汇出现的频率&#xff0c;使用wordcloud库按照词汇频率的大小生成词云。 注意&#xff0c;不是使用wordcloud.generate()&#xff0c;这个方法没有按照词汇频率的方式实现词云 停…

Linux 驱动开发基础知识——总线设备驱动模型(七)

个人名片&#xff1a; &#x1f981;作者简介&#xff1a;学生 &#x1f42f;个人主页&#xff1a;妄北y &#x1f427;个人QQ&#xff1a;2061314755 &#x1f43b;个人邮箱&#xff1a;2061314755qq.com &#x1f989;个人WeChat&#xff1a;Vir2021GKBS &#x1f43c;本文由…

极速搭建幻兽帕鲁私服,叫上好友春节假期一起联机畅玩帕鲁

文章目录 前言幻兽帕鲁私服详细部署教程查看服务器开始游戏自定义游戏参数配置 前言 行业资讯 《幻兽帕鲁》的火爆对开发商 Pocketpair 来说&#xff0c;代价是巨大的。该游戏的成功让首席执行官沟部拓郎最近在推特上表示&#xff0c;他可能因服务器运营费用而面临破产。据他透…

山西电力市场日前价格预测【2024-02-04】

日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2024-02-04&#xff09;山西电力市场全天平均日前电价为367.56元/MWh。其中&#xff0c;最高日前电价为441.08元/MWh&#xff0c;预计出现在18:30。最低日前电价为324.52元/MWh&#xff0c;预计…

代码混淆技术综述与优化方法

摘要 本文介绍了代码混淆的概念和目的&#xff0c;并提供了Python代码混淆的宏观思路。同时&#xff0c;还介绍了一种在线网站混淆Python代码的方法&#xff0c;并给出了混淆前后的示例代码。 引言 在当今信息时代&#xff0c;软件代码的保护显得尤为重要。代码混淆是一种常…