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_map
    for (const auto& pair : myMap) {
        cout << pair.first << ": " << pair.second << endl;
    }   

    return 0;
}

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

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

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

相关文章

docker 安装docker-compose

首先需要把如下文件 安装到centos7中的/usr/local/bin 下 执行如下命令

vue修改element面包屑样式

vue修改element面包屑样式 element面包屑默认后边的是浅颜色的&#xff0c;前边的是深色的&#xff0c; 现在UI设计图要修改成前面是浅色的&#xff0c;后面是深色的 如果直接修改样式会无法区分一级或者二级路由&#xff0c;用一下方法可以实现&#xff1a; <el-breadc…

装完32G内存条 电脑飞跃提升!

我是南城余&#xff01;阿里云开发者平台专家博士证书获得者&#xff01; 欢迎关注我的博客&#xff01;一同成长&#xff01; 一名从事运维开发的worker&#xff0c;记录分享学习。 专注于AI&#xff0c;运维开发&#xff0c;windows Linux 系统领域的分享&#xff01; 大家…

Unity - 角色控制

Test_05 角色控制 创建一个3D对象作为角色&#xff0c;添加 “CharacterController” 组件来控制角色移动&#xff0c;绑定脚本"PlayerControl"。 PlayerControl public class PlayerControl : MonoBehaviour {private CharacterController player;void Start(){p…

Power Apps 向Power Automate传一个数组参数

Power Apps传Power Automate数组参数 背景Power Apps传参方法画布开发我们现在power apps中设置一个集合**ArrCollect**准备一个按钮 Power Automate接收总结画布流 背景 我们通常会从Power Apps界面传递参数给Flow中&#xff0c;但是很多时候仅仅是一个字符串类型的已经不适用…

Qt/Qt Creator窗体界面集成自定义MyRibbon工具栏Qt纯代码实现-升级版2-非第三方Ribbon工具

程序示例精选 Qt/Qt Creator窗体界面集成自定义MyRibbon工具栏Qt纯代码实现-升级版2-非第三方Ribbon工具 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对《Qt/Qt Creator窗体界面集成自定义M…

github配置ssh的时候 ssh: connect to host github.com port 22: Connection timed out

今天配置ssh的时候最后一步验证是否能够连接成功的时候&#xff0c;出现了这个报错 查看了一下 .ssh 文件夹&#xff0c;发现只有两个文件 但是看到网上别人的都是有一个config文件&#xff0c;所以我们也要创建一个config文件&#xff08;这个文件是没有文件类型的&#xff0…

大模型-提示词工程

提示原则 1.编写明确具体的指令 策略一&#xff1a;使用分隔符清晰地表示输入的不同部分&#xff0c;分隔符可以是&#xff1a;&#xff0c;“”&#xff0c;<>&#xff0c; 你可以使用任何明显的标点符号将特定的文本部分与提示的其余部分分开。这可以是任何可以使模型…

Navicat 技术干货 | 保护关系数据库安全的措施

在当今的数字信息时代&#xff0c;数据是组织的生命线。因此&#xff0c;保护数据安全从未如此重要。为了防止敏感数据受到未经授权的访问、泄露或其他的安全威胁&#xff0c;实施强有力的安全措施非常有必要。本文将为大家列举一些保护关系数据库安全的措施建议。 访问控制 数…

微信小程序(十三)生命周期-更新应用提醒

注释很详细&#xff0c;直接上代码 新增内容&#xff1a; 1.onLaunch用法 2.onShow用法 3.onHide用法 4.应用更新API的调用模板 源码&#xff1a; App({//小程序初始化时触发&#xff0c;全局只触发一次onLaunch(option) {//可以获取场景值和启动参数&#xff0c;eg.optioncons…

golang通过go-git下载gitlab源码

1 申请令牌 方法1&#xff1a;具体项目下申请&#xff1a; 方法2&#xff1a;全局申请 2 获取token 3 下载代码 package mainimport ("fmt""os""github.com/go-git/go-git/v5" )func main() {_, err : git.PlainClone("/tmp/foo",…

数据结构和算法笔记4:排序算法-归并排序

归并排序算法完全遵循分治模式。直观上其操作如下&#xff1a; 分解&#xff1a;分解待排序的n个元素的序列成各具n/2个元素的两个子序列。解决&#xff1a;使用归并排序递归地排序两个子序列。合并&#xff1a;合并两个已排序的子序列以产生已排序的答案。 我们直接来看例子…

消失的她,GERBER失踪之谜

高速先生成员--王辉东 那天的雪好大&#xff0c;深深的脚印在在青春里安了家。 林如烟正倚在窗前&#xff0c;看着窗外的雪花飘飘撒撒。 她好想这一刻就去雪中奔跑潇洒。 赵理工偷偷看着林如烟的背影痴痴傻傻。 一切都显得那么静谥和诗意。 突然大师兄喊一句&#xff1a;“…

Transformer and Pretrain Language Models3-1

content transformer attention mechanism transformer structure​​​​​​​ pretrained language models language modeling pre-trained langue models(PLMs&#xff09; fine-tuning approaches PLMs after BERT applications of masked LM frontiers of PLMs …

Linux系统常用命令行指令

Linux系统是一种常用于开源项目开发的生产环境&#xff0c;因其免费、开源、安全、稳定的特点被广泛应用于手机、平板电脑、路由器、电视和电子游戏机等嵌入式系统中&#xff0c;能够更加简便地让用户知道系统是怎样工作的。前几日我安装好了Red Hat Enterprise Linux 9.0&…

秒级弹性!探索弹性调度与虚拟节点如何迅速响应瞬时算力需求?

作者&#xff1a;吴昆 前言 在前面的文章《弹性调度助力企业灵活应对业务变化&#xff0c;高效管理云上资源》中&#xff0c;我们介绍了阿里云容器服务 ACK 弹性调度为了帮助客户解决在使用云上弹性资源时&#xff0c;面对的“难以差异化控制业务资源使用量&#xff0c;缩容时…

边缘计算及相关产品历史发展

边缘计算及相关产品历史发展 背景边缘计算的历史CDN&#xff08;Content Delivery Network&#xff09;Cloudlet雾计算MEC&#xff08;Multi-Access Edge Computing&#xff0c;MEC&#xff09; 边缘计算的现状云计算厂商硬件厂商软件基金会 背景 最近&#xff0c;公司部分业务…

MySQL45道练习题

作业需要数据表SQL语句已给 1. 查询" 01 "课程比" 02 "课程成绩高的学生的信息及课程分数 select * from Student RIGHT JOIN (select t1.SId, class1, class2 from(select SId, score as class1 from sc where sc.CId 01)as t1, (select SId, score as …

『踩坑记录』Ubuntu安装python3-pip报错Package ‘python3-pip‘ has no installation candidate

文章目录 问题描述解决方法&#xff1a;添加apt的Universe库完 问题描述 sudo apt update;sudo aptupgrade后安装python3-pip仍然失败&#xff0c;报错&#xff1a; Package python3-pip is not available, but is referred to by another package. This may mean that the p…

环形链表的约瑟夫问题

前言 大家好呀&#xff0c;我是Humble&#xff0c;今天要分享的内容是环形链表的约瑟夫问题 说到链表&#xff0c;约瑟夫问题&#xff08;约瑟夫环&#xff09;绝对是一个经典的算法题&#xff0c;下面就让我们一起看一下吧~ 正文开始前&#xff0c;我们先看一个小小的故事&a…