STL之unordered_map使用方法

这里写目录标题

  • STL之unordered_map使用方法
    • 1.什么是STL呢
    • 2.unordered_map
      • 2.1 头文件:
      • 2.2 怎么创建:
      • 2.3 初始化:
      • 2.4 根据key获取对应value值:
      • 2.5 遍历,判断key是否存在:
      • 2.6 怎么根据迭代器it获取key和value:
    • 综合示例

STL之unordered_map使用方法

1.什么是STL呢

C++的STL(Standard Template Library)是C++标准库的一部分,它提供了一组通用的模板类和函数,实现了很多常见的数据结构和算法,使得C++程序员能够更方便地进行开发。STL的设计目标是提供高性能、通用性和可移植性。

STL主要包括以下几个组件:

  • 容器(Containers): 提供了各种数据结构,如向量(vector)、链表(list)、队列(queue)、栈(stack)、集合(set)、映射(map)等。这些容器提供了不同的接口和特性,以满足不同的需求。

  • 迭代器(Iterators): 提供了一种统一的访问容器元素的方式,使得算法可以独立于容器而工作。迭代器允许你按顺序访问容器中的元素。

  • 算法(Algorithms): 提供了一系列通用的算法,如排序、查找、变换等。这些算法可以用于不同类型的容器,并且可以通过迭代器进行访问。

  • 函数对象(Function Objects): 也称为仿函数(Functors),是一种可以像函数一样调用的对象。它们通常用于算法中,允许自定义操作。

  • 适配器(Adapters): 提供了一些用于修改或扩展容器和迭代器接口的类,如栈适配器(stack)、队列适配器(queue)等。

2.unordered_map

【功能】:无序映射,与 map 类似,但不进行排序,提供更快的查找操作。是无序的哈希表,存储无序的键值对。

2.1 头文件:

#include <unordered_map>

2.2 怎么创建:

unordered<String,int> myMap;

2.3 初始化:

    // 插入键-值对myMap["Alice"] = 25;//类似数组方式的赋值,给键映射对应值myMap["Bob"] = 30;myMap["Charlie"] = 35;

2.4 根据key获取对应value值:

    cout << "Age of Alice: " << myMap["Alice"] << endl;

2.5 遍历,判断key是否存在:

    // 检查键是否存在if (myMap.find("David") != myMap.end()) {cout << "Age of David: " << myMap["David"] << endl;}

注:myMap.find()返回的是一个迭代器,可以根据迭代器it遍历无序哈希表,一般根据it是否等于xx.end()判断有没有找到对应的键,如果等于xx.end()就是没有找到,否则就是找到了。

2.6 怎么根据迭代器it获取key和value:

it->first 表示哈希表的键,而 it->second 表示哈希表键对应的值。这种表示方式允许您通过迭代器 it 来访问键值对的键和值。

    for (const auto& pair : myMap) {cout << pair.first << ": " << pair.second << endl;}

注:auto关键字是c++11后表示自动推导类型

情况1:用const auto& pair是不能修改pair的

image

修改键映射的值:

情况2:用auto& pair是可以修改迭代器指向的对象的

    for (auto& pair : myMap) {cout << pair.first << ": " << pair.second << endl;pair.second++;}

image

情况3:使用auto pair 是值传递

image

综合示例

#include <iostream>
#include <array>
#include <vector>
#include <unordered_map>using namespace std;int main() {// 创建一个 unordered_map,将字符串映射到整数unordered_map<string, int> myMap;// 插入键-值对myMap["Alice"] = 25;//类似数组方式的赋值,给键映射对应值myMap["Bob"] = 30;myMap["Charlie"] = 35;// 查找值cout << "Age of Alice: " << myMap["Alice"] << endl;// 检查键是否存在if (myMap.find("David") != myMap.end()) {cout << "Age of David: " << myMap["David"] << endl;}else {cout << "David not found in the map." << endl;}// 遍历 unordered_mapfor (const auto& pair : myMap) {cout << pair.first << ": " << pair.second << endl;}   return 0;
}

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

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

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

相关文章

ML Design Pattern——I see

ML Life Cycle MLOps ML Pipelines Fully automated processes ML Design Patterns Reading the book? 链接&#xff1a;https://pan.baidu.com/s/1MgOSHASAOJ0EVhMYmT9QeQ?pwd96uk 提取码&#xff1a;96uk

【K8S 云原生】K8S的包包管理器-helm

目录 一、helm概念 1、什么是helm 2、helm的概念&#xff1a; 二、实验部署&#xff1a; 1、安装helm&#xff1a; 2、对chart仓库的基本使用&#xff1a; 2.1、查看和更新chart仓库 2.2、安装chart 2.3、卸载chart&#xff1a; 3、helm自定义模版&#xff1a; 3.1、…

测试C#调用OpenCvSharp和ViewFaceCore从摄像头中识别人脸

学习了基于OpenCvSharp获取摄像头数据&#xff0c;同时学习了基于ViewFaceCore的人脸识别用法&#xff0c;将这两者结合即是从摄像头中识别人脸。本文测试测试C#调用OpenCvSharp和ViewFaceCore从摄像头中识别人脸&#xff0c;并进行人脸红框标记。   新建Winform项目&#xf…

imu_utils安装及标定教程

本文使用香港科技大学的imu_utils方差工具标定&#xff0c;首先将INDEMIND双目惯性模组静止放置三个小时。然后采集IMU数据&#xff0c;生成Allan方差数据&#xff0c;由图分析得到加速度和角速度的高斯白噪声和随机游走Bias误差。 系统配置 系统版本ubuntu18.04OpenCV3.4.13…

关于事务的最常见的十道面试题

面试题一&#xff1a;什么是事务&#xff1f;为什么需要事务&#xff1f; 事务(Transaction)是保证数据库可靠性和稳定性的一种机制&#xff0c;单个逻辑工作单元执行的一系列操作&#xff0c;这些操作要么全部完成&#xff0c;要么全部不完成&#xff0c;是数据库环境中的最小…

计算机二级Python基本排序题-序号46(补充)

1. 用赋值语向给定一个包含学生姓名和成绩的字典:{“lili”:80,“xiaoqiang”:75,“yunyun”:89,“yuanyuan”:90,“wanghao”:85}&#xff0c;统计其中分数最高的三个同学&#xff08;假设不存在同分的情况&#xff09;的成绩&#xff0c;并将它们的成绩和分数打印在屏幕上。屏…

0122-2-JavaScript正则表达式

《JavaScript正则表达式》 第一章 正则表达式 字符匹配 正则表达式是匹配模式&#xff0c;要么匹配字符&#xff0c;要么匹配位置&#xff01; 横向匹配 /ab[2,5]/c/g 匹配 abc, abbc,abbbc,abbbbc,abbbbbc&#xff0c;数字连续出现 2 到 5 次&#xff0c;会匹配 2 位、3 位、…

枚举算法(穷举法)(暴力法)

1.什么是枚举 枚举是指在一定范围内将所有情况一一列举&#xff0c;再通过条件判断得到自己想要的答案&#xff1b; 2.枚举核心 3.使用枚举的基本步骤 4.例题 4.1.我国古代数学家张丘建在他的《算经》一书中提出了著名的“百钱买百鸡”问题:鸡翁一值钱五;鸡母一值钱三;鸡雏三…

springsecurity集成kaptcha功能

前端代码 本次采用简单的html静态页面作为演示&#xff0c;也可结合vue前后端分离开发&#xff0c;复制就可运行测试 项目目录 登录界面 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</…

【.NET Core】多线程之线程池(ThreadPool)详解(一)

【.NET Core】多线程之线程池&#xff08;ThreadPool&#xff09;详解&#xff08;一&#xff09; 文章目录 【.NET Core】多线程之线程池&#xff08;ThreadPool&#xff09;详解&#xff08;一&#xff09;一、概述二、线程池的应用范围三、线程池特性3.1 线程池线程中的异常…

OR36 链表的回文结构

目录 一、思路 二、代码 一、思路 找到中间节点 后半部分逆置链表 定义两个指针&#xff0c;一个从头开始出发 一个从中间位置开始出发 但是注意&#xff1a;链表个数可能是奇数或者偶数&#xff0c;需要注意中间节点的计算 二、代码 struct ListNode* reverseList(str…

linux的kali安装,换源,更新包

下载kali kali.org进入官网后点第二个 然后点第一个 解压kali 下载后获得.7z压缩包&#xff0c;建议移动到合适自己电脑的位置进行解压&#xff0c;我喜欢放在D盘 启动kali 双击进入解压出的文件夹&#xff0c;将唯一一个.vmx文件用vmware打开&#xff08;没装的自行提前装…