【数据类型】映射map

小明正在备考英语四级考试,但他的词典太厚了,他记不住哪个单词在哪里。

于是他准备开发一个可以直接找某单词在某页的应用。

但是,他不会做,整天十分烦恼。

好啦,进入正题,大家好,我是@学霸小羊,今天来讲讲map——映射

map翻译为映射,是STL中的常用容器。

其实,数组就是一种映射,比如:int a[100];就是定义了一个int到int的映射。而 a[5]=25 ; 就是把 5 映射到25。

数组总是将 int 类型映射到其它基本类型(称为数组的基类型),这同时也带来了一个问题,有时候我们希望把 string 映射成一个 int ,数组就不方便了。

这时就可以使用map,map可以将任何基本类型(包括STL容器)映射到任何基本类型(包括STL容器)。

而我们,就要通过映射,开发一个小明想要的程序。

(当然,是为了我考英语四级考试用的,我才懒得帮小明做)

  1. 第 1 行 1 个正整数 N,N<=10,000,表示字典中一共有多少个单词。
  2. 接下来每两行表示一个单词,其中:
    • 第 1 行是一个长度小于或等于 100 的字符串,表示这个单词,全部小写字母,单词不会重复。
    • 第 2 行是 1 个整数,表示这个单词在字典中的页码。
    • 接下来一行是 1 个整数 M ,M <= 10,000,表示要查的单词数。
    • 接下来的M行,每行一个字符串,表示要查的单词,保证在字典中存在

做这个程序,想必大家都会想到结构体,但是,请看(不是VCR):

这,打破了我们美好的幻想。

关键时刻,映射出场了!

映射其实是数组的变形,它可以随意改变数组下标的类型,以及数组存储内容的类型。

定义方法:

map<string,int> mp;
//定义以字符串为下标、int类型为映射mp

上面代码中的string和int是可以替换的。

映射,顾名思义,通过某物映射到另一物;而上面代码就是通过字符串映射他的页码(整型)。

而那个“下标”,叫 键值(关键值);和他对应的那个值,较映射值。

例:

#include<bits/stdc++.h>
using namespace std;
map<string,int> mp;
int main(){mp["ant"]=10;mp["bear"]=14;mp[elephant]=21;string s;cin>>s;cout<<mp[s];return 0;
}
/*
输入:ant
输出:10
*/

map除了可以用下标(键值)访问,还可以用迭代器访问:

例如:定义了 map< char , int > mp,且做了多次操作后,输出所有的值。

mp['c']=124, mp['t']=100,  mp['c']=200;map<char,int>::iterator it; //定义迭代器变量 itfor(it=mp.begin(), it !=mp.end(), it++)  //用迭代器来输出映射的内容cout<<it->first<<':'<<it->second<<endl;

总结起来,就是一下这几种操作:


map<key_type,value_type>name;//普通的定义map<string,int>::iterator it; //定义映射类型的迭代器。it->first; // 引用键值it->second // 引用映射值。m.size(); // 元素个数;m.empty(); // 判m是否空;m.clear(); // 清空m;m.begin();  //是指向map中最小元素的迭代器。m.end();  //是指向map中最大元素下一个位置的迭代器。

好啦,就今天就讲到这,拜拜!

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Kubernetes从零到精通(12-Ingress、Gateway API)

Ingress和Gateway API都是Kubernetes中用于管理外部访问集群服务的机制&#xff0c;但它们有不同的设计理念和适用场景。它们的基本原理是通过配置规则&#xff0c;将来自外部的网络流量路由到Kubernetes集群内部的服务上。 Ingress/Gateway API和Service Ingress/Gateway API…

Django后台管理复杂模型

【图书介绍】《Django 5企业级Web应用开发实战&#xff08;视频教学版&#xff09;》_django 5企业级web应用开发实战(视频教学版)-CSDN博客 《Django 5企业级Web应用开发实战&#xff08;视频教学版&#xff09;》(王金柱)【摘要 书评 试读】- 京东图书 (jd.com) Django框架…

ZLMediaKit Windows编译以及使用

1.运行ZLMediaKit 2.通过ffmpeg把视频源推流给ZLMediaKit 执行以下命令&#xff0c;将本地视频通过RTSP协议推流给ZLMediaKit。 ffmpeg -re -stream_loop -1 -i "D:\workplace\armgb\public\1.fileh264" -vcodec h264 -f rtsp rtsp://127.0.0.1/live/test 若想将本…

统信服务器操作系统【d版系统上Ansible工具】配置方法

在统信服务器操作系统d版本上进行安装Ansible工具的方法以及配置方法。 文章目录 准备环境功能描述安装与配置一、 安装ansible工具1. 直接 命令安装2. 验证安装结果3. 配置ssh免密登录二、Ansible使用1. 主机清单配置2. ansible命令3. ansible模块三、 playbook配置文件1. 执行…

Java 发布jar包到maven中央仓库(2024年9月保姆级教程)

文章目录 前言一、账号准备1. 注册登录账号2. 新建命名空间3. 验证命名空间4. 生成令牌5. 为 maven 设置令牌二、GPG准备1. 下载GPG2. 发布证书2.1 新建证书2.2 发布证书到服务器2.3 验证发布三、发布jar包到中央仓库1. 编辑项目pom文件2. 打包上传3. 发布jar包4. 搜索我们的ja…

【机器学习】任务五:葡萄酒和鸢尾花数据集分类任务

目录 1.实验基础知识 1.1 集成学习 &#xff08;1&#xff09;随机森林 &#xff08;2&#xff09;梯度提升决策树&#xff08;GBDT&#xff09; &#xff08;3&#xff09;XGBoost &#xff08;4&#xff09;LightGBM 1.2 参数优化 &#xff08;1&#xff09;网格搜索…

Java面试篇基础部分-Java线程池工作原理

线程池的出现,主要是用来管理一组线程的工作运行状态,这样可以方便JVM更好的利用CPU资源。 Java线程池的工作原理:JVM先根据用户的参数创建一定数量的可运行的线程任务,并且将这些任务放入到队列中,在线程创建之后,启动这些任务。 如果当线程数超过最大线程数,这个线程数…

WIFI路由器的套杆天线简谈

❝本次推文简单介绍下WIFI路由器的套杆天线。 路由器天线 路由器在这个万物互联的时代&#xff0c;想必大家对其都不陌生。随着科技的发展&#xff0c;常用的路由器上的天线也越来越多&#xff0c;那么问题来了&#xff1a;天线越多&#xff0c;信号越好吗&#xff1f;路由器…

视频转文字工具:开启视频内容深度挖掘的钥匙

图片里到文字要提取出来&#xff0c;现在有很多的工具&#xff0c;但是视频里的文字要提取出来&#xff0c;是不是就不那么好操作呢&#xff1f;并不是的&#xff0c;现在也有不少支持视频转文字的工具&#xff0c;这次我们就来介绍一些可以提高我们视频文字提取效率的工具吧。…

【CSS in Depth 2 精译_033】5.4 Grid 网格布局的显示网格与隐式网格(中)

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第一章 层叠、优先级与继承&#xff08;已完结&#xff09; 1.1 层叠1.2 继承1.3 特殊值1.4 简写属性1.5 CSS 渐进式增强技术1.6 本章小结 第二章 相对单位&#xff08;已完结&#xff09; 2.1 相对…

[Redis][环境配置]详细讲解

目录 1.安装 && 简单配置2.文件目录说明3.客户端 1.安装 && 简单配置 Ubuntu下&#xff0c;直接使用sudo apt install redis -y即可支持远程连接&#xff1a;修改/etc/redis/redis.conf 将bind 127.0.0.1改为bing 0.0.0.0作为学习用途&#xff0c;可以将prote…

代码——IMX6UL烧录工具及其使用

一、简介 在此感谢正点原子官方提供的IMX6UL烧录代码&#xff0c;本篇是在正点原子给的代码基础上修改的&#xff0c;增加了些许功能&#xff0c;可根据自己的需求更改。此外代码难免有疏漏之处&#xff0c;还望见谅 二、源代码的使用 1,库和工具的安装 安装库和工具前&#x…

Datawhale X 南瓜书 task01学习笔记

机器学习三观 机器学习工程领先理论 what:什么是机器学习? 机器学习定义&#xff1a;研究关于“学习算法”(一类能从数据中学习出其背后潜在规律的算法)的一门学科PS:深度学习指的是&#xff1a;神经网络那一类学习算法&#xff0c;因此是机器学习的子集把深度学习单列出来…

idea连接docker 自动化部署

进入Linux服务器 vim /lib/systemd/system/docker.service将 ExecStart/usr/bin/dockerd -H fd:// --containerd/run/containerd/containerd.sock 替换为 ExecStart/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock新建文件 Dockerfile配置Dockerfile文…

Linux下rpm方式部署mysql(国产化生产环境无联网服务器部署实操)

请放心观看&#xff0c;已在正式环境部署验证&#xff0c;流程无问题&#xff01; 所用系统为国产化麒麟银河 aarch64系统&#xff0c;部署时间2024年9月份&#xff01; #查看服务器信息 #涉及生产服务器&#xff0c;所以输出信息隐藏了一部分[rootecs-xxxxx hdata]# uname -…

Java 中常用的排序算法

Java 中常用的排序算法有很多&#xff0c;每种算法的时间复杂度和适用场景都不同。以下是几种常见的排序算法及其 Java 实现和讲解&#xff1a; 1. 冒泡排序 (Bubble Sort) 算法思路&#xff1a; 重复地遍历数组&#xff0c;每次比较相邻两个元素。如果前一个比后一个大&…

性能测试笔记

一、性能测试介绍 1.概述 性能测试时通过工具/代码模拟正常/峰值/异常的负载条件&#xff0c;对系统的各项性能指标进行测试和评估的过程 本阶段的学习范围是服务端的性能测试&#xff0c;不包括客户端性能 测试目的 评估当前系统能力&#xff0c;如&#xff1a;新出的手机都…

新书速览|NestJS全栈开发解析:快速上手与实践

《NestJS全栈开发解析:快速上手与实践》 本书内容 《NestJS全栈开发解析:快速上手与实践》旨在帮助读者快速掌握NestJS&#xff08;简称Nest&#xff09;开发&#xff0c;并应用于实战项目。本书共10章&#xff0c;首先介绍基本概念&#xff0c;为读者打下坚实的知识基础。接着…

chapter15-泛型——(泛型语法)——day20

目录 554-泛型引入 555-泛型入门 556-泛型入门 557-泛型应用实例 558/9-泛型使用细节 560-泛型课堂练习 554-泛型引入 555-泛型入门 556-泛型入门 泛型先泛再型 557-泛型应用实例 泛型一旦指定了&#xff0c;编译器就会按照指定来约束传入类型 558/9-泛型使用细节 560-泛…

算法训练——day15数组交集(是否去重)

349. 两个数组的交集 给定两个数组 nums1 和 nums2 &#xff0c;返回 它们的 交集。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 示例 1&#xff1a; 输入&#xff1a;nums1 [1,2,2,1], nums2 [2,2] 输出&#xff1a;[2]示例 2&#xff1a; 输入…