STL之map【有序哈希表】使用方法

这里写目录标题

  • map【有序哈希表】使用方法
      • 1.头文件:
      • 2.创建map:
      • 3.添加键值对:
      • 4.查找键值对:
      • 5.遍历键-值对:
      • 5.综合示例:班级学生

map【有序哈希表】使用方法

话不多说,接着讲map用法:

map:映射,存储键-值对,并按键升序排序。

1.头文件:

#include <iostream>
#include <map>

2.创建map:

map<string, int> myMap; // 创建一个从字符串到整数的映射

3.添加键值对:

insert(pair<Key, Value>(key, value)):向映射中插入键-值对

   //使用make_pair将参数变成键值对类型myMap.insert(make_pair("c1",v1) );myMap.insert(make_pair("c2", v2));myMap.insert(make_pair("c3", v3));//或者直接使用花括号myMap.insert({"c4",v4});

4.查找键值对:

  • find(key):查找映射中是否存在特定键,返回迭代器。
  • count(key):统计特定键在映射中的出现次数(对于 std::map,要么是0,要么是1)。
    // 5.查找键值对int times = myMap.count("c2");if (times == 1) {cout << "存在班级c2" << endl;} else {cout << "不存在班级c2" << endl;}//找出班级c3的所有学生map<string, vector<string>>::iterator it;it = myMap.find("c3");if(it != myMap.end()) {cout << "班级c2的学生: ";for (string stu : it->second) {cout << stu << " ";}}

5.遍历键-值对:

  • 使用迭代器可以遍历整个映射
void printMap1(map<string, vector<string>>& myMap) {map<string, vector<string>>::iterator it;for (it = myMap.begin(); it != myMap.end();it++) {cout << "班级: " << it->first << " 学生:";for (const string& stuName : it->second){cout << stuName << ", ";}cout << endl;}
}

5.综合示例:班级学生

#include <iostream>
#include <set>
#include <string>
#include <map>
#include <vector>
using namespace std;//输出每个班级的人
void printMap(map<string, vector<string>>&  myMap) {for (const auto& pair : myMap) {cout << "班级: " << pair.first << " 学生:";for (const auto& stuName : pair.second){cout << stuName << ", ";}cout << endl;}}void printMap1(map<string, vector<string>>& myMap) {map<string, vector<string>>::iterator it;for (it = myMap.begin(); it != myMap.end();it++) {cout << "班级: " << it->first << " 学生:";for (const string& stuName : it->second){cout << stuName << ", ";}cout << endl;}}int main() {// 使用map存储班级-学生信息,班级是key,学生信息是value,一个字符串数组// 1.创建mapmap<string, vector<string>>  myMap;// 2.准备数据vector<string> v1 = {"张三","李四","王五"};vector<string> v2 = {"李寻欢","二郎神","游所为"};vector<string> v3 = {"郭靖","杨过","黄蓉"};vector<string> v4 = {"jack","Tom","Lina"};// 3.给map添加元素的两种办法: //在 map 中,键值对的插入语法应该使用 make_pair 或者花括号 {}myMap.insert(make_pair("c1",v1) );myMap.insert(make_pair("c2", v2));myMap.insert(make_pair("c3", v3));myMap.insert({"c4",v4});//输出每个班级的人printMap(myMap);// 4.删除指定键值对myMap.erase("c4");printMap1(myMap);// 5.查找键值对int times = myMap.count("c2");if (times == 1) {cout << "存在班级c2" << endl;} else {cout << "不存在班级c2" << endl;}//找出班级c3的所有学生map<string, vector<string>>::iterator it;it = myMap.find("c3");if(it != myMap.end()) {cout << "班级c2的学生: ";for (string stu : it->second) {cout << stu << " ";}}return 0;
}

image

综合示例2:统计单词频率

#include <iostream>
#include <map>
#include <string>
#include <sstream>
using namespace std;/*
@description: 本文件介绍有序map容器用法02
@author zhengshihong
*/int main() {string text = "this is a simple example of using std map this is example";map<string, int> wordFrequency;// 将文本拆分为单词并统计频率// istringstream 是 C++ 中的输入流,它可以从字符串中读取数据,就像 cin 从标准输入中读取数据一样。istringstream iss(text);//创建了一个 istringstream 对象 iss,并用给定的文本 text 来初始化它string word;//定义了一个字符串变量 word,用于存储从 iss 读取的每个单词。//它不断从 iss 中读取单词,并将每个单词存储在 word 变量中while (iss >> word) {// 将单词插入映射,如果已存在则增加频率wordFrequency[word]++;//使用 word 作为键,将单词插入到名为 wordFrequency 的映射(map 或 unordered_map)中。//如果已存在key等于单词,则频率加1,不存在则增加等于单词的key,并初始化频率为1}// 输出每个单词的频率for (const auto& pair : wordFrequency) {cout << pair.first << ": " << pair.second << endl;}return 0;
}

image

那么map的用法就讲到这里,下一章看vector的用法。

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

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

相关文章

spyder 对 lambda 函数的调试

如何进入lambda匿名函数进行调试&#xff1a; import pandas as pddef func(a, b):return a bseries pd.Series([1,2,3,4]) a series.apply(lambda x: func(x, 2)) print(a) 在调用匿名函数的地方打上断点&#xff0c;也就是这一行&#xff1a; a series.apply(lambda x…

总结Symbol、Set、WeakSet、Map、WeakMap

前言 这几个es6新增的数据结构和变量类型&#xff0c;不经常用&#xff0c;好容易忘记啊。在此记录一下&#xff0c;方便复习。 Symbol Symbol是es6新增的基本数据类型&#xff0c;用于生成独一无二的值。 基本使用 1、创建两个描述相同的值&#xff0c;也不会相等。 let s1 …

R303 指纹识别模块功能实现流程

1 基本通信流程 1.1 UART 命令包的处理过程 1.2 UART 数据包的发送过程 UART 传输数据包前&#xff0c;首先要接收到传输数据包的指令包&#xff0c;做好传输准备后发送成功应答包&#xff0c;最后才开始传输数据包。数据包主要包括&#xff1a;包头、设备地址、包标识、包长…

基于jQuery与Spring MVC实现用户密码异步修改的实战演示

文章目录 一、实战概述二、实战步骤&#xff08;一&#xff09;创建表单1、表单界面2、表单代码3、脚本代码 &#xff08;二&#xff09;后端控制器&#xff08;三&#xff09;测试代码&#xff0c;查看效果1、弹出更改密码表单2、演示更改密码操作 三、实战总结 一、实战概述 …

【MySQL】最左匹配原则

最左匹配原则 0x1 简单说下什么是最左匹配原则 顾名思义&#xff1a;最左优先&#xff0c;以最左边的为起点任何连续的索引都能匹配上。同时遇到范围查询(>、<、between、like&#xff09;就会停止匹配。 例如&#xff1a;b 2 如果建立(a&#xff0c;b&#xff09;顺序…

苏州渭塘镇应用无人机“智慧执法”

苏州渭塘镇应用无人机“智慧执法” 在今年以来&#xff0c;渭塘镇综合行政执法局采用了“空中地面”的立体监督模式&#xff0c;以实现对“互联网执法”工作的深入推进。在这一模式下&#xff0c;无人机巡查作为技术手段得到广泛应用&#xff0c;而安全生产监管信息系统和综合…

自然语言处理--双向匹配算法

自然语言处理作业1--双向匹配算法 一、概述 双向匹配算法是一种用于自然语言处理的算法&#xff0c;用于确定两个文本之间的相似度或匹配程度。该算法通常使用在文本对齐、翻译、语义匹配等任务中。 在双向匹配算法中&#xff0c;首先将两个文本分别进行处理&#xff0c;然后…

企业使用CRM系统有哪些好处?使用CRM应该注意什么?

近年来&#xff0c;企业竞争日趋激烈&#xff0c;为推动企业业绩增长&#xff0c;赢得市场的一席之地&#xff0c;CRM成为企业争相布局的管理工具。那么CRM是什么&#xff0c;到底有什么魔力能让企业管理者着迷&#xff0c;本文我们将为大家进行深入剖析。 什么是CRM&#xff…

龙芯3A6000_通过xrdp远程访问统信UOS

原文链接&#xff1a;龙芯3A6000|通过xrdp远程访问统信UOS hello&#xff0c;大家好&#xff01;今天我带给大家的是一篇实用性极强的技术文章——通过xrdp远程访问装载在龙芯3A6000上的统信UOS操作系统。这意味着&#xff0c;无论您使用的是Windows、MACOS还是Linux操作系统&a…

[视频处理]关于视频处理的多画面样式

在开发视频系统时&#xff0c;经常会遇到多画面的需求&#xff0c;这里收集一些多画面的素材&#xff0c;共大家参考。 图片来源于网络&#xff0c;仅供参考。 后续补充文章 【图像处理】使用FPGA实现视频多画面的方案 多画面样式

【博士每天一篇论文-综述】Deep Echo State Network (DeepESN)_ A Brief Survey

阅读时间&#xff1a;2023-11-22 1 介绍 年份&#xff1a;2017 作者&#xff1a;C. Gallicchio 比萨大学计算机科学系终身教授助理教授&#xff0c;A. Micheli&#xff0c;比萨大学计算机科学系 期刊&#xff1a; ArXiv 引用量&#xff1a;68 这是两个大牛的论文&#xff0c;…

autosar学习笔记 之SecOC

SecOC 接下来SecOC标准就更复杂一点,它不单单是做了通讯校验。 SecOC是基于对称密钥加密的一套机制,需要对ECU间的通讯作身份认证处理,来更好的防止伪装攻击,谈起对称或非对称加密,就会涉及到密钥的存储和Mac值的计算。 因此SECOC机制对于密钥的硬件存储,也有一定的要求…

matlab appdesigner系列-常用15-滑块、微调器

滑块&#xff0c;以左右拖动的方式在一定范围内改变数值 此示例&#xff0c;滑块显示微调器的数值&#xff0c;微调器也可以显示滑块的数值 操作步骤为&#xff1a; 1&#xff09;将滑块和微调器拖拽到画布上 2&#xff09;分别设置这两个组件的回调函数 回调函数有两个选项…

c语言-常见的动态内存错误

文章目录 前言一、常见的动态内存错误1.1 对空指针进行解引用操作1.2 对动态开辟的空间进行越界访问1.3 对非动态开辟的空间使用free()1.4 使用free()释放一块动态开辟的空间时&#xff0c;释放不完全1.5 对同一块动态开辟的空间进行多次释放1.6 动态开辟的空间使用后&#xff…

Android14源码剖析:MediaPlayer与MediaPlayerService区别?(五十四)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只…

MySQL数据库 | 事务中的一些问题(重点)

文章目录 什么是事务&#xff1f;事务的几个特性(ACID) -重点原子性(Atomicity)一致性(Consistency)隔离性(Isolation)持久性(Durability) Mysql中事务操作隐式事务显式事务 savepoint关键字只读事务事务中的一些问题&#xff08;重点&#xff09;隔离级别脏读解决办法 幻读解决…

美易官方《惊爆财务丑闻,有空头已经赚了十倍》

惊爆财务丑闻&#xff0c;“四大粮商”之首ADM股价暴跌&#xff0c;有空头已经赚了十倍 近日&#xff0c;一起惊爆市场的财务丑闻让全球投资者为之震惊。作为全球最大的农业综合企业之一&#xff0c;“四大粮商”之首的ADM&#xff08;Archer Daniels Midland&#xff09;被曝涉…

信息检索与数据挖掘 | (八)语言建模的IR

文章目录 &#x1f4da;语言生成模型&#x1f4da;平滑&#x1f407;线性插值平滑方法(Lelinek-Mercer)&#x1f407;dirichlet 平滑&#x1f407;Vector space&#xff08;向量空间&#xff09; vs BM25 vs LM &#x1f4da;语言生成模型 传统的语言生成模型可以用于识别或生成…

【Pytorch】搭建一个简单的泰坦尼克号预测模型

介绍 本文使用PyTorch构建一个简单而有效的泰坦尼克号生存预测模型。通过这个项目&#xff0c;你会学到如何使用PyTorch框架创建神经网络、进行数据预处理和训练模型。我们将探讨如何处理泰坦尼克号数据集&#xff0c;设计并训练一个神经网络&#xff0c;以预测乘客是否在灾难…

MySQL数据库查询语句之组函数,子查询语句

组函数 以组为操作单位&#xff0c;一组数据得到一个结果。 在没有手动分组的前提下&#xff0c;整张表默认为一组数据 max(列名)&#xff1a;获取最大值 min(列名)&#xff1a;获取最小值 sum(列名)&#xff1a;获取总和 avg(列名)&#xff1a;获取平均值 count(列名)&a…