当前位置: 首页 > news >正文

【C++】Map()函数

在 C++ 中,map 是一个关联容器,它存储键值对,每个键都是唯一的,键和值之间存在一对一的映射关系。map 是基于红黑树实现的,因此它提供了对元素的有序存储和高效的查找能力。

1. 基本用法

map 的基本语法如下:

#include <iostream>
#include <map>int main() {// 创建一个 map,键为 int 类型,值为 string 类型std::map<int, std::string> myMap;// 插入元素myMap[1] = "apple";myMap[2] = "banana";myMap[3] = "orange";// 访问元素std::cout << "Key 1: " << myMap[1] << std::endl;// 遍历 mapfor (const auto& pair : myMap) {std::cout << "Key: " << pair.first << ", Value: " << pair.second << std::endl;}// 查找元素auto it = myMap.find(2);if (it != myMap.end()) {std::cout << "Found key 2 with value: " << it->second << std::endl;}return 0;
}

2. 常用操作

  • 插入元素:可以使用 insert() 或者直接通过下标操作符 [] 插入元素。
  • 访问元素:通过键值可以直接访问对应的值,例如 myMap[key]
  • 查找元素:使用 find() 方法查找指定的键,返回一个迭代器。如果未找到,则返回 end()
  • 删除元素:使用 erase() 方法删除指定的键值对。

3. 特性

  • 排序map 会根据键自动排序。
  • 唯一性:每个键在 map 中是唯一的,不能插入重复的键。
  • 复杂度:查找、插入和删除操作的时间复杂度为 O(log n)。

4. 示例代码

以下是一个更复杂的示例,展示键值对的插入、查找和删除功能:

#include <iostream>
#include <map>int main() {std::map<std::string, int> ageMap;// 插入元素ageMap["Alice"] = 30;ageMap["Bob"] = 25;ageMap["Charlie"] = 35;// 遍历并输出for (const auto& pair : ageMap) {std::cout << pair.first << " is " << pair.second << " years old." << std::endl;}// 查找元素std::string name = "Bob";auto it = ageMap.find(name);if (it != ageMap.end()) {std::cout << name << " is " << it->second << " years old." << std::endl;}// 删除元素ageMap.erase("Charlie");// 遍历删除后的结果std::cout << "After deletion:" << std::endl;for (const auto& pair : ageMap) {std::cout << pair.first << " is " << pair.second << " years old." << std::endl;}return 0;
}

总结

C++ 的 map 是一个非常有用的容器,适合用于需要快速查找或需要键值对关系的情境。通过 map,你可以方便地管理和操作数据。


http://www.mrgr.cn/news/59923.html

相关文章:

  • python笔记:@property
  • 快速入门HTML
  • Rust教程
  • H5实现PDF文件预览,使用pdf.js-dist进行加载
  • 8 个用于创建电商组件的 CSS 和 JS 代码片段
  • Vscode + EIDE +CortexDebug 调试Stm32(记录)
  • 【无标题】idea 一次性切换多个项目的分支
  • 【轻量级聊天应用】Vocechat本地服务器部署结合cpolar异地即时通讯
  • 龙芯+FreeRTOS+LVGL实战笔记(新)——13LVGL字体转换
  • 【程序员的逆袭】:在失业的阴影下寻找光明
  • linux系统安全:开源的反病毒工具ClamAV的安装配置使用和维护介绍
  • 如何解决RabbitMQ消息的重复消费问题
  • JavaScript 数据类型与操作
  • LeetCode算法(哈希)
  • osgEarth中显示XYZ影像服务
  • C++STL之stack
  • Python条形图 | 指标(特征)重要性图的绘制
  • 高效网络自动化:Python在网络基础中的应用
  • Java设计模式之代理模式(一)
  • 《模型部署》—— 客户端与服务端之间的交互实现模型的输出结果
  • 第十一部分 Java 数据结构及集合
  • 动态规划 —— 斐波那契数列模型-解码方法
  • HarmonyOS NEXT 应用开发实战(八、知乎日报List列表下拉刷新及上滑加载更多分页的实现)
  • 【笔记】Diffusion Model 扩散过程(熵增过程:从有序变为无序):在原始分布上逐步的加高斯噪声,加到最后这个分布就变成一个各项独立的高斯分布
  • 常用 Web 框架
  • 我的电脑问题