C++中的unordered_map用法

 更新时间:2024年03月26日 14:27:09   作者:SimpleLearing  
当你在C++中需要使用哈希表(无序映射)来管理键值对时,unordered_map 是一个非常有用的数据结构,本文主要介绍了C++中的unordered_map用法,具有一定的参考价值,感兴趣的可以了解一下

当你在C++中需要使用哈希表(无序映射)来管理键值对时,unordered_map 是一个非常有用的数据结构。以下是关于 unordered_map 的用法;

1. 概述

unordered_map 是 C++ STL(标准模板库)中的一个关联容器,用于存储键值对。它基于哈希表实现,可以实现快速的插入、查找和删除操作,时间复杂度接近常数级别。

2. 包含头文件

在使用 unordered_map 之前,需要包含 <unordered_map> 头文件:

#include <unordered_map>

3. 声明和初始化

可以使用以下语法来声明和初始化一个 unordered_map

unordered_map<KeyType, ValueType> myMap; // 声明一个空的 unordered_map
unordered_map<string, int> myMap = {{"apple", 5}, {"banana", 10}}; // 声明并初始化一个包含键值对的 unordered_map

4. 插入和访问元素

可以使用 insert 或 emplace 函数向 unordered_map 中插入新的键值对,并使用 [] 运算符或 at 函数来访问元素:

unordered_map<string, int> myMap;
myMap.insert(make_pair("apple", 5)); // 插入键值对
myMap.emplace("banana", 10); // 插入键值对(C++11 特性)
int value1 = myMap["apple"]; // 使用 [] 运算符访问元素
int value2 = myMap.at("banana"); // 使用 at 函数访问元素

5. 删除元素

可以使用 erase 函数删除指定键的元素:

unordered_map<string, int> myMap = {{"apple", 5}, {"banana", 10}};
myMap.erase("apple"); // 删除键为 "apple" 的元素

6. 查找元素

可以使用 find 函数查找指定键的元素,返回指向该元素的迭代器,如果未找到则返回 unordered_map::end()

unordered_map<string, int> myMap = {{"apple", 5}, {"banana", 10}};
auto it = myMap.find("apple");
if (it != myMap.end()) {
    cout << "Found: " << it->first << " -> " << it->second << endl;
} else {
    cout << "Not found" << endl;
}

7. 遍历元素

可以使用迭代器来遍历 unordered_map 中的所有元素:

unordered_map<string, int> myMap = {{"apple", 5}, {"banana", 10}};
for (auto it = myMap.begin(); it != myMap.end(); ++it) {
    cout << it->first << " -> " << it->second << endl;
}

以上就是关于 unordered_map 的基本用法文档。使用 unordered_map 可以方便地实现对键值对的管理和操作,适用于各种需要快速查找和插入元素的场景。

到此这篇关于C++中的unordered_map用法的文章就介绍到这了,更多相关C++ unordered_map内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C++ 函数指针的实现

    C++ 函数指针的实现

    本文主要介绍了C++ 函数指针的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-02-02
  • C语言 位域详解及示例代码

    C语言 位域详解及示例代码

    本文主要介绍C语言 位域的知识,这里整理了相关资料,并附示例代码及详解,有兴趣的小伙伴可以参考下
    2016-08-08
  • C++ 操作系统内存分配算法的实现详解

    C++ 操作系统内存分配算法的实现详解

    本文主要介绍了在动态分区管理方式下采用不同的分配算法实现主存分配和实现主存回收,旨在帮助学生理解在动态分区管理方式下应怎样实现主存空间的分配和回收。感兴趣的可以了解一下
    2021-11-11
  • C++之返回类型用法及return语句介绍

    C++之返回类型用法及return语句介绍

    这篇文章主要介绍了C++之返回类型用法及return语句,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2026-06-06
  • 使用OpenGL绘制Bezier曲线

    使用OpenGL绘制Bezier曲线

    这篇文章主要为大家详细介绍了使用OpenGL绘制Bezier曲线的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-04-04
  • 浅谈C++左值引用和右值引用

    浅谈C++左值引用和右值引用

    这篇文章主要介绍了C++左值引用和右值引用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • 浅谈C++空间配置器allocator

    浅谈C++空间配置器allocator

    在STL中,Memory Allocator处于最底层的位置,为一切的Container提供存储服务,是一切其他组件的基石。对于一般使用 STL 的用户而言,Allocator是不可见的。本文将主要介绍C++空间配置器allocator
    2021-06-06
  • C++数据结构之链表的创建

    C++数据结构之链表的创建

    这篇文章主要介绍了C++数据结构之链表的创建的相关资料,希望通过本文帮助到大家,让大家理解掌握这部分内容,需要的朋友可以参考下
    2017-10-10
  • C++实现推箱子小游戏

    C++实现推箱子小游戏

    这篇文章主要为大家详细介绍了C++实现推箱子小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-01-01
  • C语言每日练习之进制转换

    C语言每日练习之进制转换

    这篇文章主要介绍了C语言进制转换,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-11-11

最新评论