STL容器-map P3613【深基15.例2】寄包柜 普及-
题目来源:洛谷题库
文章目录
- map例题
- map知识点
- map
- 使用注意:
- `map`的常用用法
map例题
P3613【深基15.例2】寄包柜 普及-
题意
根据数据插入/查询
思路
map键值对可以根据柜子编号查找物品,但是柜子又有很多个,考虑数组或者map数组或者vector
数据约束
暂无
参考代码
#include <bits/stdc++.h>
#include <map>
using namespace std;
const int N = 100005;
int main() {//错误示范,主要是内存开销大导致溢出而出错,如果N小就没问题
// map<int,int> m[N];
// int n,q;//q表示询问次数
// int op,i,j,k;//操作数、柜子i,格子j
// cin>>n>>q;
// while(q--){
// cin>>op;
// if(op==1){
// cin>>i>>j>>k;
// m[i][j]=k;
// }else{
// cin>>i>>j;
// cout<<m[i][j]<<endl;
// }//方法一:直接给键值对的内容留一定的空间,占用不同的地址即可map<int,int> m;int n,q;//q表示询问次数 int op,i,j,k;//操作数、柜子i,格子j cin>>n>>q;while(q--){cin>>op;if(op==1){cin>>i>>j>>k;m[i*N+j]=k; }else{cin>>i>>j;cout<<m[i*N+j]<<endl;}}//方法二:vecot<map>vector<map<int, int>> m(N); // 使用 vector 动态分配 map 数组int n, q;int op, i, j, k;cin >> n >> q;while (q--) {cin >> op;if (op == 1) {cin >> i >> j >> k;m[i][j] = k; // 更新柜子 i 中的格子 j 的值} else {cin >> i >> j;cout << m[i][j] << endl; // 输出柜子 i 中格子 j 的值}}return 0;
}
map知识点
map
特点:
- 有序存储:根据键(key)对元素自动排序。
- 键值对存储:每个元素都是一个键值对(key-value),你可以通过键来查找值。
- 查找/插入高效 O(log n):通过键可以非常快速地查找对应的值。
例子:
想象你在一个图书馆找书,书架上的书按照编号顺序排列。如果你知道书的编号,你可以直接找到书的位置。图书馆工作人员能根据书名快速帮你找到对应的编号(键),从而查找书籍(值)。
在C++中,map
(也称为关联容器或红黑树)是一种关联容器,它按照键值对(关键字和值)存储元素,容器元素是按照关键字排序,并且不允许有多个元素的关键字相同。通过键进行快速查找、插入和删除。
使用注意:
- 第一个可以称为关键字(key),每个关键字只能在map中出现一次,第二个可能称为该关键字的值(value) ; 例如: map<string,int> a;可以将字符串映射为整数,map<double,int>a;可以将双精度浮点数映射为整数。
- multimap允许存储相同键的元素
- map中的元素是一对数据︰<关键字,数值>,这个概念在STL中有专门的数据结构叫pair,有一个相关函数make_pair和两个成员名first,second。可以直接类似Pair修改map的值
- 不能修改map容器的关键字。map是按照关键字排序,当关键修改,容器不会重新调整排序,于是容器的有序性会被破坏,再再容器上进行查找等操作是会得到错误结果
map
是一个基于红黑树(或其他平衡树)的数据结构,每个map
会为每个键值对分配内存。因此,map
的内存占用不仅仅是存储键值对的数据,还包含树结构的指针等开销。具体的内存占用取决于map
中存储的元素数量和每个元素的大小。 map<int,int> m[N];可能单个数据就占16个字节 所以一般不用而是用vector<map<int, int>> m(N)代替
map
的常用用法
1、创建map实例:
//这里的KeyType是唯一的标识符类型,ValueType是存储的数据类型。
map<KeyType, ValueType> myMap;
2、插入元素:
如果键已存在,新值会覆盖旧值。
//方法一
myMap.insert({key, value});
//方法二-类似于数组,只是map的下表是键而非自增整数
myMap[key] = value;
//方法三:直接 插入pair即可
myMap.insert(make_pair("wsad",6));
myMap.insert(pair<string,int>("jkluio",10086));
3、查找元素:
find()
返回指定关键字的位置迭代器,指向键对应的元素,如不存在迭代器会指向map.end()。
map<type1,type2>::iterator it = myMap.find(key);
if (it != myMap.end()) {cout << "Value: " << it->second << endl;
}
4、遍历map:
//迭代器
map<string, int>::iterator it;
for(it=mp.begin();it!=mp.end();it++){cout<<it->first<<" "<<it->second<<endl;}
这会遍历整个map,打印出所有的键值对。
5、删除元素
如果键存在,元素会被删除;如果使用迭代器删除,必须确保迭代器指向map中的元素。
map<string, string> dictionary; // 创建一个 map,键是 string,值是 string// 插入一些键值对dictionary["apple"] = "A fruit that is red, green, or yellow.";dictionary["banana"] = "A yellow fruit that is long and curved.";dictionary["cat"] = "A small domesticated carnivorous mammal.";// 查找并输出键 "apple" 对应的值map<string, string>::iterator it = dictionary.find("apple");if (it != dictionary.end()) {cout << "Found: " << it->first << " -> " << it->second << endl;} else {cout << "apple: Not found!" << endl;}// 检查某个键是否存在并删除它if (dictionary.find("banana") != dictionary.end()) {cout << "Deleting banana..." << endl;dictionary.erase("banana");} else {cout << "banana: Not found, cannot delete!" << endl;}// 再次查找并输出剩下的元素cout << "\nRemaining items in the dictionary:" << endl;for (map<string, string>::iterator it = dictionary.begin(); it != dictionary.end(); ++it) {cout << it->first << ": " << it->second << endl;}
例题:
相关文章:
STL容器-map P3613【深基15.例2】寄包柜 普及-
题目来源:洛谷题库 文章目录 map例题map知识点map使用注意:map的常用用法 map例题 P3613【深基15.例2】寄包柜 普及- 题意 根据数据插入/查询 思路 map键值对可以根据柜子编号查找物品,但是柜子又有很多个,考虑数组或者map数组…...
excel使用笔记
1.工作表1计算工作表2某列的和 假设我们有两个工作表,分别命名为“Sheet1”和“Sheet2”,我们想要求和这两个工作表中A1到A**单元格的数据,可以在任意一个工作表的单元格中输入以下公式: SUM(Sheet1!A1:A10, Sheet2!A1:A10) SUM…...
EasyGBS点对点穿透P2P远程访问技术在安防视频监控中的应用
随着信息技术的快速发展,安防视频监控系统在公共安全领域的应用变得越来越广泛。传统的视频监控系统多依赖于中心服务器进行视频流的集中处理和分发,这不仅增加了网络带宽的负担,还可能成为系统性能瓶颈。为了解决这些问题,P2P&am…...
【MySQL中多表查询和函数】
目录 1.多表查询 1.1 外键 1.2 链接查询 2.MySQL函数 内置函数简介 数值函数 字符串函数 时间日期函数 条件判断操作 开窗函数 1.多表查询 本质:把多个表通过主外键关联关系链接(join)合并成一个大表,在去单表查询操作…...
Polars数据聚合与旋转实战教程
在这篇博文中,我们的目标是解决数据爱好者提出的一个常见问题:如何有效地从Polars DataFrame中创建汇总视图,以便在不同时间段或类别之间轻松进行比较。我们将使用一个实际的数据集示例来探索实现这一目标的各种方法。 Polars简介 Polars 是…...
SpringBoot【十三(准备篇)】集成在线接口文档Swagger2
一、前言🔥 环境说明:Windows10 Idea2021.3.2 Jdk1.8 SpringBoot 2.3.1.RELEASE 二、swagger介绍 我就不卖关子啦,相信在座的各位很多都已经用过,但是没关系,只要全世界还有一个没用过,我都会给他讲。 那…...
CKA认证 | Day6 K8s网络
第六章 Kubernetes网络 1、Service 控制器 在 Kubernetes (K8S) 中,Service 控制器 是一个关键组件,负责管理 Kubernetes 服务的生命周期和实现其功能。Service 控制器确保服务能够正确地将流量路由到后端 Pod,并处理服务的负载均衡和 DNS …...
基于Llamaindex的网页内容爬取实战
目的 本文不关注如何解析网页 html 元素和各种 python 爬虫技术,仅作为一种网页数据的预处理手段进行研究。Llamaindex 也并不是爬虫技术的集大成者,使用它是为了后续的存查一体化。 安装依赖 pip install llama-index-readers-web # pip install llam…...
springboot429校运会管理系统(论文+源码)_kaic
摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装校运会管理系统软件来发挥其高效地信息处理的作用ÿ…...
tcpdump编译
https://github.com/westes/flex/releases/download/v2.6.4/flex-2.6.4.tar.gz tar -zxvf flex-2.6.4.tar.gz ./configure CFLAGS-D_GNU_SOURCE make sudo make installwget http://ftp.gnu.org/gnu/bison/bison-3.2.1.tar.gz ./configure make sudo make install以上两个库是…...
Vite快速构建Vue教程
步骤 1: 初始化项目目录 创建一个名为 projects 的文件夹,作为存放所有 Vite 项目的根目录。这个文件夹将容纳多个独立的 Vite 项目。 步骤 2: 创建 Vite 项目 右键点击 projects 文件夹并选择“在此处打开终端”或使用您偏好的代码编辑器(如 VSCode&…...
四、个人项目系统搭建
文章目录 一、python写的后端代码二、html代码三、index.css四、js代码 效果图: 一、python写的后端代码 后端代码使用Flask编写,如下所示: # app.py from flask import Flask, render_template, request, jsonify, g import sqlite3 import…...
长沙理工大学《2024年825自动控制原理真题》 (完整版)
本文内容,全部选自自动化考研联盟的:《长沙理工大学825自控考研资料》的真题篇。后续会持续更新更多学校,更多年份的真题,记得关注哦~ 目录 2024年真题 Part1:2024年完整版真题 2024年真题...
Linux上安装Anaconda
查看版本 lsb_release -a uname -m x86_64:表示系统是64位。i686、i386:表示系统是32位。 到连接安装对应版本 连接到ldhttps://repo.anaconda.com/archive/ 配置对应的conda环境,export PATH/对应目录/anaconda3/bin:$PATH *注意为bi…...
HTTP常见的请求头有哪些?都有什么作用?在 Web 应用中使用这些请求头?
HTTP 请求头(Request Headers)用于在 HTTP 请求中携带额外的信息,帮助服务器更好地处理请求。以下是一些常见的 HTTP 请求头及其作用: 常见请求头及其作用 1. Accept 作用:告知服务器客户端可以接受的内容类型。示例…...
扩展tinyplay使其自适应不同声道数量的媒体
android原来的tinyplay代码,如果遇到播放媒体的升到数量与打开pcm的声道数量不匹配的情况,会没法继续播放。 本例扩展了tinyplay的代码,将不同声道的音频数据展开/压缩到pcm设备支持的数据,再写入pcm设备。 bplay.c #include &l…...
[Unity] AppLovin Max接入Native 广告 IOS篇
NativeIOS构建流程 (接入之前备份之前打包得Xcode工程) 下载资源 1.将以下文件放入Unity Assets->Plugins->IOS文件夹下 2.Unity更新max版本至12.4.1 UnityPlugin 6.4.3以上(很重要) 3.NativeSDKManager.CS根据以下附…...
跨平台开发技术的探索:从 JavaScript 到 Flutter
随着多平台支持和用户体验一致性在应用程序开发中变得越来越重要,开发者面临的挑战是如何在不同平台上保持代码的可维护性和高效性。本文将探讨如何利用现代技术栈,包括 Flutter、JavaScript、HTML5、WebAssembly、TypeScript 和 Svelte,在统一的平台上进行高效的跨平台开发…...
计算机网络技术基础:2.计算机网络的组成
计算机网络从逻辑上可以分为两个子网:资源子网和通信子网。 一、资源子网 资源子网主要负责全网的数据处理业务,为全网用户提供各种网络资源与网络服务。资源子网由主机、终端、各种软件资源与信息资源等组成。 1)主机 主机是资源子网的主要…...
PKCS#7、Bit padding(位填充)、Byte padding(字节填充)、Zero padding(零填充)
PKCS#7、Bit padding(位填充)、Byte padding(字节填充)、Zero padding(零填充)是密码学常见的填充方式。 Bit padding(位填充): 位填充可以应用于任意长度的消息。在消息…...
在 Kibana 中为 Vega Sankey 可视化添加过滤功能
作者:来自 Elastic Tim Bosman 及 Miloš Mandić 有兴趣在 Kibana 中为 Vega 可视化添加交互式过滤器吗?了解如何利用 “kibanaAddFilter” 函数轻松创建动态且响应迅速的 Sankey 可视化。 在这篇博客中,我们将了解如何启用 Vega Sankey 可视…...
快速部署一套K8s集群-v1.28
快速部署一套K8s集群-v1.28 1.前置知识点 1.1 生产环境可部署Kubernetes集群的两种方式 目前生产部署Kubernetes集群主要有两种方式: kubeadmKubeadm是一个K8s部署工具,提供kubeadm init和kubeadm join,用于快速部署Kubernetes集群。 二进制包从github下载发行版的二进…...
python3验证有效正则表达式
Python 中字符串类型本质上没有标记“是否原始”的特性,原始字符串只是为了书写方便。运行时,原始字符串与普通字符串的表现是相同的,唯一的区别是编写代码时是否进行了转义。 因此,如果需要确保某些输入是有效正则表达式&#x…...
Dify+Xinference本地部署Embedding和Rerank模型
文章目录 1、Xinference介绍2、Xinference安装2.1 Xinference Docker安装2.2 pip安装2.3 设置开启自启动(仅针对pip安装用户) 3、部署Embedding和Rerank模型4、Dify调用Xinference模型 1、Xinference介绍 Xinference是一个性能强大且功能全面的分布…...
是时候戒掉小游戏了
玩儿这东西没够!去年本来是要备考CPA,但是赶上写毕业论文,就以此为由,没有去备考,结果论文没完成,考试也没准备,都是游戏惹的祸!今年计划备考,看了两个月书,结…...
ECMAScrip 与 ES2015(ES6):JavaScript 现代化编程的里程碑
在 JavaScript 的发展历程中,ECMASCript 和 ES2015(也称为 ES6)无疑是最具革命性的版本之一。它们不仅引入了大量的新特性和语法糖,还极大地提升了代码的可读性、可维护性和性能。本文将深入探讨 ECMASCrip 和 ES2015 的新特性及其…...
iOS swift开发系列 -- tabbar问题总结
1.单视图如何改为tabbar,以便显示2个标签页 右上角➕,输入tabbar 找到控件,然后选中,把entrypoint移动到tabbar控件 2.改成tabbar,生成两个item,配置各自视图后,启动发现报错 Thread 1: “-[p…...
nginx 部署 ModSecurity3
一、查看本地nginx版本 nginx是yum安装的 # nginx -v nginx version: nginx/1.26.2 二、安装依赖工具 # yum install -y gcc-c flex bison yajl lmdb lua curl-devel curl GeoIP-devel zlib-devel pcre-devel pcre2-devel libxml2-devel ssdeep-devel libtool autoconf aut…...
websocket_asyncio
WebSocket 和 asyncio 指南 简介 本指南涵盖了使用 Python 中的 websockets 库进行 WebSocket 编程的基础知识,以及 asyncio 在异步非阻塞 I/O 中的作用。它提供了构建高效 WebSocket 服务端和客户端的知识,以及 asyncio 的特性和优势。 1. 什么是 WebS…...
一级考试真题(2019)
一级考试真题(2019)...
OpenCV相机标定与3D重建(20)将单应性矩阵分解为旋转矩阵、平移向量和法向量函数decomposeHomographyMat()的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 将单应性矩阵分解为旋转矩阵、平移向量和法向量。 cv::decomposeHomographyMat 是 OpenCV 库中的一个函数,用于将单应性矩阵…...
题解 - 取数排列
题目描述 取1到N共N个连续的数字(1≤N≤9),组成每位数不重复的所有可能的N位数,按从小到大的顺序进行编号。当输入一个编号M时,就能打印出与该编号对应的那个N位数。例如,当N=3时,可…...
LVGL9.2 鼠标悬停处理
文章目录 前言鼠标悬停处理功能简介使用场景1. **按钮悬停效果**2. **图标高亮**3. **动态工具提示** 实现原理使用方法1. 设置控件样式2. 监听悬停事件 功能亮点注意事项总结 前言 在 v9.2 版本中,新增了许多功能,其中鼠标悬停处理(Mouse H…...
每日计划-1213
1. 完成 SQL2 查询多列 https://www.nowcoder.com/exam/oj?page1tabSQL%E7%AF%87topicId199 2. 八股部分 1) C 中面向对象编程如何实现数据隐藏? 在c中,可以将数据成员声明为私有或受保护,并提供公有的成员函数来访问和修改这些数据成员&am…...
gz中生成模型
生成模型 通过服务调用生成 还记得parameter_bridge 吗? 我们在生成桥接的时候调用了这个cpp文件。 一个 parameter_bridge 实例用于消息传递(传感器数据)。之前的例子 另一个 parameter_bridge 实例用于服务桥接(动态生成模型…...
三相电机不转,如何判断好坏?
在现代工业生产中,三相电机被广泛应用于各类机械设备中,由于其高效能和稳定性,成为驱动设备的首选。然而,在实际使用过程中,三相电机有时会出现不转动的情况,这不仅会影响生产效率,还可能对设备…...
使用观测云排查数据库死锁故障
故障发现 核心应用 pod 发生重启,同时接收到对应使用者反馈业务问题,开始排查。 观测云排查现场 1、根据重启应用信息,查询 APM 执行数据库 update 操作大量报错,执行时间在 5min 以上。 分析 APM 链路异常,发现是触…...
STM32 USB通信知识与应用详解
在嵌入式系统开发中,STM32作为一款性能卓越的微控制器,其USB通信功能的应用十分广泛。本文将深入探讨STM32 USB的相关知识,从基础概念到实际应用,为读者呈现一个全面的STM32 USB通信知识体系。 一、USB基础知识 USB(…...
IoTDB 集群扩容方法
问题 问题1:当时序数据库 IoTDB 集群的存储占用达到多少时,建议增加节点?是等到存储完全满,还是达到一半时就进行扩容?如果集群存储已满,是否需要手动进行数据清理,比如设置 TTL,还…...
控制台报错:Uncaught (in promise):XXXXX问题定位以及前端文件流excel文件下载方法
今天对接上传文件的接口时,明明接口是通的,也正常返回了文件流,然而,控制台就是打印不出返回值,而且一直报错Uncaught (in promise):XXXXX 去查看axios的封装函数,这个internal error是从返回值…...
.NET平台使用C#设置Excel单元格数值格式
设置Excel单元格的数字格式是创建、修改和格式化Excel文档的关键步骤之一,它不仅确保了数据的正确表示,还能够增强数据的可读性和专业性。正确的数字格式可以帮助用户更直观地理解数值的意义,减少误解,并且对于自动化报告生成、财…...
6.2 MapReduce工作原理
MapReduce工作原理涉及将大数据集分割成小块并行处理。Map任务读取数据块并输出中间键值对,而Reduce任务则处理这些排序后的数据以生成最终结果。MapTask工作包括读取数据、应用Map函数、收集输出、内存溢出时写入磁盘以及可选的Combiner局部聚合。ReduceTask工作则…...
C语言指针
1,指针是什么 指针是内存中一个最小内存单元(一个字节)的编号,也就是地址通常口语中说的指针,通常是指指针变量也就是用来存放内存中地址的变量 每个内存单元都有一个地址,这个地址不需要存起来࿰…...
前端(async 和await)
1 async async 将 function 变为成为 async 函数 ●async 内部可以使用 await,也可以不使用,因此执行这个函数时,可以使用 then 和 catch 方法 ●async 函数的返回值是一个 Promise 对象 ●Promise 对象的结果由 async 函数执行的返回值决…...
打造高效的HIS与DAT文件解析工具
在工业数据采集和存储中,HIS 和 DAT 文件是非常常见的二进制数据格式。然而,解析这些固定块大小的二进制文件并将其转换为易读的 CSV 格式并非易事。本文将深入讲解如何使用 Python 和 PyQt5 打造一款图形化工具,轻松解析和转换这些文件&…...
YOLO系列:二、基于yolov8和labelme制作数据集及模型训练
YOLO系列:二、基于yolov8和labelme制作数据集及模型训练 1.新建一个项目1.数据集标注及类型转换1. 1 使用labelme进行数据标注1.1.1打开labelme1.1.2图像标注及存储 1. 2 将数据集转换成yolo类型 2.模型训练的配置文件2. 1打开labelme标注图像2.1.1三级目录 3.模型训…...
PHP搭建环境
一、安装apache 1、获取Apache安装软件 2、双击安装即可:指定对应的路径:E:server/apache 3、选择安装模式:使用自定义模式 4、选择安装位置 二、Apache的目录结构说明 三、Httpd.exe的详细应用 1、服务器进程:运行之后才能够工作...
LeetCode hot100-69-N
https://leetcode.cn/problems/valid-parentheses/description/?envTypestudy-plan-v2&envIdtop-100-liked 20. 有效的括号 已解答 简单 相关标签 相关企业 提示 给定一个只包括 (,),{,},[,] 的字符串 s &#x…...
14:00面试,14:06就出来了,问的问题有点变态。。。
从小厂出来,没想到在另一家公司又寄了。 到这家公司开始上班,加班是每天必不可少的,看在钱给的比较多的份上,就不太计较了。没想到5月一纸通知,所有人不准加班,加班费不仅没有了,薪资还要降40%…...
ubuntu20.04复现 Leg-KILO
这里写目录标题 opencv版本问题下载3.2.0源代码进入解压后的目录创建构建目录运行 CMake 配置 配置时指定一个独立的安装目录,例如 /opt/opencv-3.2:出错: 使用多线程编译错误1: stdlib.h: 没有那个文件或目录错误2:er…...