C++ map容器

通俗一点讲map其实就是python的字典(学会python字典 == c++_map)!!!

map和unordered_map都是C++中的关联容器,用于存储键值对。其主要区别在于底层实现方式和性能表现。

1、底层实现方式
  map内部使用红黑树(一种自平衡二叉查找树)来实现,而unordered_map则使用哈希表来实现。这意味着,在map中,元素是按照键的大小进行有序排列的,而在unordered_map中,则不保证元素的顺序。

2、性能表现
  当需要有序地遍历元素时,map的性能比unordered_map更好。但是,当需要快速查找特定的元素时,unordered_map通常比map更快。原因在于,map在插入和删除操作时需要维护红黑树的平衡,而unordered_map则只需要计算哈希值并将元素放入相应的桶中即可。

3、用途
  由于map可以保证元素的有序性,所以适合用于需要有序的情况下,例如按照键排序输出元素、寻找最小值/最大值等。而unordered_map则适合用于需要快速查找元素的情况下,例如查找是否存在某个键值对、统计某个值出现的次数等。

总之,选择map还是unordered_map取决于具体的需求。如果需要有序地处理元素,则应该使用Map;如果需要快速查找元素,则可以使用unordered_map。

1.写入数据 && 读取数据

#include <iostream>
#include <algorithm>
#include <map>
#include <unordered_map>
using namespace std;map<string,int> vm;int main()
{// 插入数据// key = age  value = 18//方法1vm["age"] = 18; //方法2vm.insert(pair<string,int>("id",123456));//读取数据//方法1map<string,int>::iterator it;for(it = vm.begin();it!=vm.end();it++){cout<<it->first<<" "<<it->second<<endl;}//方法2for(auto it = vm.begin();it!=vm.end();it++){cout<<it->first<<" "<<it->second<<endl;}//方法3for(auto it:vm){cout<<it.first<<" "<<it.second<<endl;}return 0;
}

2.删除数据

#include <iostream>
#include <map>
#include <algorithm>using namespace std;map<string,int> vm = {{"xxw",18},{"xm",19},{"bj",14}};int main()
{// 删除指定元素map<string,int>::iterator t1;t1 = vm.find("xm"); // "xm"为keyvm.erase(t1);for(auto it:vm)cout<<it.first<<" "<<it.second<<endl;return 0;
}

3.查找 && 删除

#include <iostream>
#include <unordered_map>
#include <algorithm>
using namespace std;unordered_map<string, int> vmu = {{"xxw", 18}, {"asd", 19}, {"rty", 45}};int main() 
{// 查找unordered_map<string, int>::iterator it;string name;printf("请输入要查早的key:");cin >> name;it = vmu.find(name);if (it != vmu.end()) {cout << "找到了\n";} else {cout << "抱歉 没找到!" << endl;}printf("-----------------------------------\n");//删除_直接通过key来删除vmu.erase("xxw");printf("删除之后:\n");for(auto it:vmu)cout<<it.first<<" "<<it.second<<endl;return 0;
}

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

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

相关文章

HarmonyOS-ArkTS基本语法及声明式UI描述

初识ArkTS语言 ArkTS是HarmonyOS优选的主力应用开发语言。ArkTS围绕应用开发在TypeScript&#xff08;简称TS&#xff09;生态基础上做了进一步扩展&#xff0c;继承了TS的所有特性&#xff0c;是TS的超集。因此&#xff0c;在学习ArkTS语言之前&#xff0c;建议开发者具备TS语…

机器学习常用算法模型总结

文章目录 1.基础篇&#xff1a;了解机器学习1.1 什么是机器学习1.2 机器学习的场景1.2.1 模式识别1.2.2 数据挖掘1.2.3 统计学习1.2.4 自然语言处理1.2.5 计算机视觉1.2.6 语音识别 1.3 机器学习与深度学习1.4 机器学习和人工智能1.5 机器学习的数学基础特征值和特征向量的定义…

Shell 文本处理常用命令

1、Sed sed 即 Stream EDitor&#xff0c;和 vi 不同&#xff0c;sed是基于行的文本编辑器。 Sed是从文件或管道中读取一行&#xff0c;处理一行&#xff0c;输出一行&#xff1b;再读取一行&#xff0c;再处理一行&#xff0c;再输出一行&#xff0c;直到最后一行。 # 查看文…

软件测试/测试开发丨Python 模块与包

python 模块与包 python 模块 项目目录结构 组成 package包module模块function方法 模块定义 定义 包含python定义和语句的文件.py文件作为脚本运行 导入模块 import 模块名from <模块名> import <方法 | 变量 | 类>from <模块名> import * 注意&a…

小红书如何高效引流?

近年来&#xff0c;公域流量价格不断上涨&#xff0c;私域流量的优势逐渐凸显。企业正花费大量资源和成本来获取新流量&#xff0c;但与其如此&#xff0c;不如将精力放在留存和复购上&#xff0c;从而实现业绩的新增长。其中关键在于如何有效地将公域流量转化为私域流量。 然而…

c++期末考题笔试来咯

最后一道大题题目再现 写一个person类&#xff0c;有姓名&#xff0c;性别&#xff0c;年龄。然后在此基础上派生出教师类和学生类。教师类增加了以下数据&#xff1a;工号&#xff0c;职称&#xff0c;工资。学生类增加了以下数据成员&#xff1a;学号&#xff0c;专业&#…

JVM调优相关参数学习

Xms 是指设定程序启动时占用内存大小。一般来讲&#xff0c;大点&#xff0c;程序会启动的快一点&#xff0c;但是也可能会导致机器暂时间变慢。 Xmx 是指设定程序运行期间最大可占用的内存大小。如果程序运行需要占用更多的内存&#xff0c;超出了这个设置值&#xff0c;就会抛…

境内深度合成服务算法备案清单(2023年12月)

截止2024年1月3日&#xff0c;第三批深度合成服务算法备案信息的公告尚未发布&#xff0c;预计将会在2024-1-10左右发布&#xff0c;我公司已知晓部分公示名单&#xff0c;如中国电信数字人生成算法&#xff0c;详情联系WX号&#xff1a;SuanfabeiandayuAI生成合成类算法应办理…

借助文档控件Aspose.Words,在 Word 文档中创建和修改 VBA 宏

通常&#xff0c;Word 文档包含 Visual Basic for Applications (VBA) 代码&#xff0c;用于自动执行任务并增强文档功能。如果您是 Java 开发人员&#xff0c;您可能想知道如何与 Word 文档中的 VBA 代码进行交互和修改。因此&#xff0c;在这篇博文中&#xff0c;我们将探讨如…

ArkTS - @Prop、@Link

一、作用 Prop 装饰器 和Link装饰器都是父组件向子组件传递参数&#xff0c;子组件接收父组件参数的时候用的&#xff0c;变量前边需要加上Prop或者Link装饰器即可。&#xff08;跟前端vue中父组件向子组件传递参数类似&#xff09; // 子组件 Component struct SonCom {Prop…

管程-第三十三天

目录 为什么要引入管程 管程的定义和基本特征 用管程解决生产者消费者问题 结论 本节思维导图 为什么要引入管程 原因&#xff1a;在解决进程的同步与互斥问题时&#xff0c;信号量机制存在编写困难和易出错的问题 能不能设计一种机制&#xff0c;让程序员写程序时不再需…

centos7下Iptables的安装(离线)

centos默认使用的防火墙是firewall&#xff0c;此防火墙不好控制端口防火墙的开闭&#xff0c;所以可以使用三方的插件来进行端口的防火墙开闭。这里就提供了Iptables组件来进行控制。本文就将介绍iptables的安装。 提供的安装包&#xff1a; 链接&#xff1a;https://pan.bai…

openGauss学习笔记-184 openGauss 数据库运维-升级-升级验证

文章目录 openGauss学习笔记-184 openGauss 数据库运维-升级-升级验证184.1 验证项目的检查表184.2 升级版本查询184.2.1 验证步骤 184.3 检查升级数据库状态184.3.1 验证步骤 openGauss学习笔记-184 openGauss 数据库运维-升级-升级验证 本章介绍升级完成后的验证操作。给出验…

VINS-MONO拓展1----手写后端求解器,LM3种阻尼因子策略,DogLeg,构建Hessian矩阵

文章目录 0. 目标及思路1. 非线性优化求解器2. 基于VINS-MONO的Marginalization框架构建Hessian矩阵2.1 estimator.cpp移植2.2 solve.cpp/preMakeHessian()2.3 solve.cpp/makeHessian() 3. solve.cpp/solveLinearSystem()求解正规方程4. 更新状态5. 迭代求解6. EVO评估结果7. 待…

虹科方案丨从困境到突破:TigoLeap方案引领数据采集与优化变革

来源&#xff1a;虹科工业智能互联 虹科方案丨从困境到突破&#xff1a;TigoLeap方案引领数据采集与优化变革 原文链接&#xff1a;https://mp.weixin.qq.com/s/H3pd5G8coBvyTwASNS_CFA 欢迎关注虹科&#xff0c;为您提供最新资讯&#xff01; 导读 在数字化工厂和智能制造时…

connection refused

nohup /home/bavon/miniconda3/envs/SLFCD/bin/python -m visdom.server -port 8098 >/home/bavon/logs/visdom.log 2>&1 &

8086CPU的寻址方式(7种)

基本概念 立即操作数&#xff1a;操作数包含在指令中寄存器操作数&#xff1a;操作数包含在CPU的某个内部寄存器中存储器操作数&#xff1a;约定操作数事先存放在存储器中存放数据的某个单元基本格式 MOV xx,yy xx&#xff1a;目的操作数字段 yy&#xff1a;源操作数字段 EA&a…

whl is not a supported wheel on this platform.解决办法

1.问题&#xff1a; 安装torch产生 2.解决办法&#xff1a; 使用pip debug --verbose查看 对应的torch版本号 Compatible tags字样&#xff0c;这些就是当前Python版本可以适配的标签。例如&#xff0c;我的Python版本是3.11&#xff0c;可以匹配下面这些文件名&#xff1a;…

Nginx多域名部署多站点

目录 1.修改配置文件nginx.conf 2. 修改hosts文件 1.修改配置文件nginx.conf 在配置文件的 server_name 处修改成自己需要的域名&#xff0c;然后保存退出 j 查看语法是否错误&#xff0c;然后重启nginx nginx -t # 查看语法是否正确 systemctl restart nginx # 重启nginx …

【面试】面向对象编程的三大概念(实例辅助记忆)

【面试】面向对象编程的三大概念&#xff08;实例辅助记忆&#xff09; 虑面向对象编程的三大特性&#xff0c;它们是&#xff1a; 封装&#xff08;Encapsulation&#xff09;&#xff1a; 将对象的状态和行为封装在一起&#xff0c;对外部隐藏对象的内部实现细节。这样可以防…