C++关联容器unordered_map无法通过索引来访问元素

// unordered_map 是 C++ 标准模板库(STL)中的一个关联容器,它提供了键-值对的存储,其特点如下:
// 1. 哈希表结构:unordered_map 使用哈希表来实现,这意味着它能够以 O(1) 的平均时间复杂度进行元素的插入、查找和删除操作。
// 2. 无序性:unordered_map 中的元素没有固定的顺序,插入元素的顺序和元素的键值大小没有关系,因此无法通过索引来访问元素
// 3. 唯一键:unordered_map 中的键是唯一的,每个键最多只能关联一个值。如果尝试插入一个已经存在的键,则该键对应的值会被更新。
// 4. 可变大小:unordered_map 可以动态地增加或减少存储空间,它会自动调整内部存储结构以适应存储元素的数量变化。
// 5. 迭代器支持:unordered_map 支持迭代器,可以通过迭代器对容器中的元素进行遍历和操作。
// 6. 查找效率高:由于哈希表的特性,unordered_map 在查找元素时具有较高的效率,尤其是在大数据量的情况下。
// 7. 内存占用相对较高:与有序关联容器(如 map)相比,unordered_map 在一定程度上会占用更多的内存空间,因为它需要额外的空间来存储哈希表的索引。
// unordered_map 提供了丰富的成员函数和操作符,使得对容器的操作更加方便和灵活。

--

unordered_map 是 C++ 标准模板库(STL)中的一种关联容器,它是一种以键值对的形式存储数据的集合。unordered_map 中的元素是通过哈希函数(hash function)来计算键的值,以确定元素的存储位置因此,它也被称为“哈希表”(hash table)或“无序映射”(unordered map)。

-

// 在C++中,`unordered_map`容器的迭代器是一种指向容器元素的对象,它允许我们遍历容器中的元素。当我们在使用范围循环来遍历`unordered_map`时,迭代器`pair`会逐个指向每个键值对。
// 让我们来详细看看这个概念:
// - 在范围循环中,`const auto& pair` 中的`pair`是一个迭代器,它会依次指向`unordered_map`中的每个键值对。
// - 迭代器可以理解为容器中的一个游标,它可以通过递增来遍历容器中的元素。
// - 在每次迭代中,`pair`会指向当前遍历到的键值对,包括键和对应的值。
// - 通过`pair.first`和`pair.second`,我们可以访问当前键值对中的键和值。

// 所以,在`unordered_map`的范围循环中,`pair.first`用于访问当前键值对的键,`pair.second`用于访问当前键值对的值。

 

#include <iostream>
#include <unordered_map>
#include <string>

using namespace std;

int main() {
    // 创建一个 unordered_map,键是学生姓名,值是年龄
    unordered_map<string, int> studentAge;

    // 向 unordered_map 中添加元素
    studentAge["Alice"] = 20;
    studentAge["Bob"] = 22;
    studentAge["Charlie"] = 21;

    // 访问元素并输出
    cout << "Alice's age: " << studentAge["Alice"] << endl;
    cout << "Bob's age: " << studentAge["Bob"] << endl;
    cout << "Charlie's age: " << studentAge["Charlie"] << endl;

    // 检查某个键是否存在
    string name = "David";
    if (studentAge.find(name) != studentAge.end()) {
        cout << name << "'s age: " << studentAge[name] << endl;
    } else {
        cout << name << " not found in the map." << endl;
    }

    // 删除某个键值对
    studentAge.erase("Charlie");

    // 遍历 unordered_map
    cout << "Student List:" << endl;
    for (const auto& pair : studentAge) {
        cout << "Name: " << pair.first << ", Age: " << pair.second << endl;
    }

    return 0;
}

--------

unordered_map 是 C++ 标准库提供的一个非常有用的容器,它提供了许多成员函数和操作符,用于对哈希表中的键值对进行操作。
下面是一些 unordered_map 提供的主要成员函数和操作符:
1. 插入操作:
   - insert: 插入键值对到 unordered_map 中。
   - emplace: 在 unordered_map 中构造一个新的元素。
2. 访问元素:
   - operator[]: 通过键访问值,如果键不存在,则会插入一个新的键值对。
   - at: 通过键访问值,如果键不存在,则会抛出异常。

3. 删除元素:
   - erase: 删除 unordered_map 中的指定元素或范围内的元素。
4. 查找操作:
   - find: 查找指定键对应的迭代器,如果键不存在,则返回 unordered_map::end()。

5. 容量:
   - size: 返回 unordered_map 中键值对的数量。
   - empty: 检查 unordered_map 是否为空。
6. 哈希策略:
   - hash_function: 返回用于计算键的哈希值的函数对象。
   - bucket_count: 返回 unordered_map 中桶的数量。
7. 遍历操作:
   - 使用迭代器进行遍历,如范围循环 for (const auto& pair : unordered_map)。

8. 其他操作:
   - clear: 清空 unordered_map 中的所有元素。
   - swap: 交换两个 unordered_map 的内容。
unordered_map 还支持各种操作符和比较函数,以及其他高级功能,使得在处理键值对时更加方便和灵活。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用XPTable控件展示多窗口数据(XPTable控件使用说明七)

我给我的应用程序找到一个新的能力&#xff0c;因为有DEMO程序界面有6个窗口&#xff0c;我使用了2个显示器&#xff0c;一起来显示。

Carla基础 | Carla预编译版安装与ROS联合仿真图文教程

目录 1 什么是Carla&#xff1f;2 Carla预编译版安装2.1 独立显卡配置2.2 安装ROS2.3 启动虚拟环境2.4 安装Carla预编译版2.5 安装carla-ros-bridge 3 测试案例常见问题 1 什么是Carla&#xff1f; Carla是由西班牙巴塞罗那自治大学计算机视觉中心指导开发的开源仿真模拟器&…

项目管理-项目沟通管理

项目管理&#xff1a;每天进步一点点~ 活到老&#xff0c;学到老 ヾ(◍∇◍)&#xff89;&#xff9e; 何时学习都不晚&#xff0c;加油 1.项目沟通管理-主要内容 项目沟通管理过程--重点&#xff1a; ①ITTO 输入&#xff0c;输出工具和技术。 ②问题和解决方案。 ③论文…

爆火4年后,露营的风还能吹多久? | 最新快讯

五一假期你去露营了吗&#xff1f; 文 | 趣解商业&#xff0c;作者 | 刘亮 “不是说露营不火了吗&#xff1f;为何订个营地如此困难&#xff1f;”江女士疑惑地说&#xff0c;她原本计划“五一”期间带家人前往浙江安吉游玩&#xff0c;但早在4月中旬咨询时就已经无法预约。 露…

构造,CF989C. A Mist of Florescence

目录 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 二、解题报告 1、思路分析 2、复杂度 3、代码详解 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 Problem - 989C - Codeforces 二、解题报告 1、思路分析 题目让构造网格图…

学术咸鱼入门指南(1)

学术基础素养 一.巧用工具管理文献&#xff0c;形成自己的文献体系 养成习惯的第一步&#xff1a;文献命名 当你下载完一篇文献&#xff0c;应该做的第一步就是给文献重新命名。命名的逻辑可以随自己的喜好来&#xff0c;可以按照“发表年份作者文章标题”。 也可以使用文献…

hadoop启动后没有namenode,datanode等解决方法

之前用的是虚拟机&#xff0c;在虚拟机上安装的hadoop&#xff0c;但是后来&#xff0c;电脑恢复出厂设置了&#xff0c;什么都重新开始。就在本地安装 Linux 子系统。 但是&#xff0c;有时候start-dfs.sh后&#xff0c;jps出现错误。 像这种拒绝连接 解决办法就是如下&…

​可视化大屏C位图:3D模型,可视化大屏的画龙点睛之处

Hello&#xff0c;我是大千UI工场&#xff0c;本期可视化大屏的焦点图&#xff08;C位&#xff09;分享将图表作为焦点图的情形&#xff0c;欢迎友友们关注、评论&#xff0c;如果有订单可私信。 3D模型在可视化大屏中有很大的价值&#xff0c;以下是一些相关的优点&#xff1a…

【平时工作中的各种术语__持续更新~~~~】

中文&#xff1a; 1、jar包 JAR包&#xff08;Java Archive Package&#xff09;是一种将多个Java类文件以及与它们相关的元数据和资源&#xff08;如文本、图片等&#xff09;打包到一个单一文件中的归档工具。它基于ZIP文件格式。JAR文件主要用于分发和部署Java应用程序。J…

机器学习入门之模型性能评估与度量

文章目录 性能评估误差欠拟合和过拟合模型选择与数据拟合 性能度量二分类的混淆矩阵查全率查准率F1分数 P-R曲线ROC曲线AUC 性能评估 机器学习的模型有很多&#xff0c;我们在选择的时候就需要对各个模型进行对比&#xff0c;这时候就需要一个靠谱的标准&#xff0c;能够评估模…

Redis 实战之RDB文件结构

RDB文件结构 databases 部分key_value_pairs 部分value 的编码字符串对象列表对象集合对象哈希表对象有序集合对象INTSET 编码的集合ZIPLIST 编码的列表、哈希表或者有序集合 总结AOF持久化的实现命令追加 AOF 文件的写入与同步小结 在本章之前的内容中&#xff0c; 我们介绍了…

ChatGPT 4.0 直接用 !!!Code Copilot编程大模型、DALL-E AI绘图、绘制流程图、上传文件

嗨&#xff0c;你好呀&#xff0c;我是哪吒。 这一年最让人揪心的热点&#xff0c;就是各种层出不穷的AI技术。 原以为它只是短暂霸屏&#xff0c;但现实却赤裸裸展示了&#xff0c;什么叫AI抢走你的饭碗&#xff0c;连招呼都不打一声! 什么策划方案、公众号文案、营销卖点、…

计算机网络4——网络层7 VPN 和NAT,MPLS

文章目录 一、虚拟专用网VPN1、介绍2、工作原理 二、网络地址转换1、介绍2、工作原理2、注意事项 三、多协议标签交换MPLS1、介绍2、MPLS 的工作原理1&#xff09;基本工作过程2&#xff09;转发等价类 FEC 3、MPLS首部的位置与格式4、新一代的 MPLS 一、虚拟专用网VPN 1、介绍…

【Linux系统化学习】网络套接字(编写简单的UDP服务端和客户端)

目录 理解源IP地址和目的IP地址 认识端口号 端口号和进程ID的区别 源端口号和目的端口号 认识TCP和UDP协议 TCP协议 UDP协议 网络字节序 socket编程接口 socket常见API sockaddr结构 简单的UDP网络程序 UDP服务端 创建套接字 填充本地网络信息 绑定 收取消息 …

selenium 4.x 之验证码处理(python)

验证码处理 一般情况公司如果涉及web自动化测试需要对验证码进行处理的方式一般有一下几种&#xff1a; 关闭验证码功能&#xff08;开发处理&#xff09;设置万能验证码&#xff08;开发处理&#xff09;使用智能识别库进行验证 通过第三方打码平台识别验证码 1. 跳过验证功…

Activity工作流基本知识点

1.概念 工作流(Workflow)&#xff0c;就是“业务过程的部分或整体在计算机应用环境下的自动化”&#xff0c;它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行&#xff0c;从而实现某个预期的业务目标&#xff0c;或者促使此目标的…

MySql#MySql数据库基础

目录 一、什么是数据库 二、主流数据库 三、基本使用 1.连接服务器 2.使用 1.查看你数据库 2.创建数据库 ​编辑 ​编辑 ​编辑​编辑 3.使用数据库 ​编辑 4.创建数据库表 5.表中插入数据 6.服务器&#xff0c;数据库&#xff0c;表之间的关系 四、MySQL架构…

AI图书推荐:AI在语言学习教育领域的应用和挑战

这本书《AI在语言学习教育领域的应用和挑战》&#xff08;AI in Language Teaching, Learning, and Assessment&#xff09;由Fang Pan编辑&#xff0c;出版于IGI Global&#xff0c;主要探讨了人工智能&#xff08;AI&#xff09;在语言教育领域的应用、挑战以及潜在的益处。 …

Vue踩坑,less与less-loader安装,版本不一致

无脑通过npm i less -D安装less之后&#xff0c;继续无脑通过npm i less-loader -D安装less-loader出现如下错误&#xff1a; 解决方法&#xff1a; 1) npm uninstall less与 npm uninstall less-loader 2) 直接对其版本&#xff1a; npm i less3.0.4 -D npm i less-loader…

Jackson 中使用 Optional

介绍 在本文中&#xff0c;我们会对 Optional 类进行一些说明&#xff0c;并且会解释下如果在使用 Optional 类的时候可能在 Jackson 中进行序列化和反序列化的过程中出现的问题。 针对上面的问题&#xff0c;本文会将会介绍在 Jackson 中如何处理 Optional 对象&#xff0c;…
最新文章