STL之unordered_map使用方法

这篇具有很好参考价值的文章主要介绍了STL之unordered_map使用方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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的

STL之unordered_map使用方法,C++之STL标准库,c++,开发语言

修改键映射的值:

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

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

STL之unordered_map使用方法,C++之STL标准库,c++,开发语言

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

STL之unordered_map使用方法,C++之STL标准库,c++,开发语言

综合示例

#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的用法。文章来源地址https://www.toymoban.com/news/detail-817057.html

到了这里,关于STL之unordered_map使用方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • unordered_map的使用

    无序映射(Unordered maps)是用于存储键值和映射值组合成的元素的关联容器,并允许基于其键快速检索各个元素。在unordered_map中,键值通常用于唯一地标识元素,而映射值是具有与该键关联的内容的对象。键的类型和映射的值可能会有所不同。 unordered_map内部实现了一个哈希

    2024年02月12日
    浏览(25)
  • 【C++】: unordered_map的使用

    key                键值的类型。unordered_map中的每个元素都是由其键值唯一标识的。 T                 映射值的类型。unordered_map中的每个元素都用来存储一些数据作为其映射值。 Hash                 一种一元函数对象类型,它接受一个key类型的对象作为

    2024年02月04日
    浏览(29)
  • 【C++】unordered_set 和 unordered_map 使用 | 封装

    unordered_map官方文档 unordered_set 官方文档 set / map与unordered_set / unordered_map 使用功能基本相同,但是两者的底层结构不同 set/map底层是红黑树 unordered_map/unordered_set 底层是 哈希表 红黑树是一种搜索二叉树,搜索二叉树又称为排序二叉树,所以 迭代器遍历是有序的 而哈希表对应的

    2024年02月06日
    浏览(30)
  • 【C++】unordered_map和unordered_set的使用

    文章目录 前言 一、unordered_map的使用及性能测试 二、unordered_set的使用 1.习题练习 总结 unordered 系列关联式容器 : 在 C++98 中, STL 提供了底层为红黑树结构的一系列关联式容器,在查询时效率可达到O(logN) ,即最差情况下需要比较红黑树的高度次,当树中的节点非常多时,

    2024年02月06日
    浏览(36)
  • C++进阶--unordered_set、unordered_map的介绍和使用

      在C++98中,STL提供了底层为红黑树结构的一系列关联式容器,在查询时效率可达到 l o g 2 N log_2N l o g 2 ​ N ,即最差情况下需要比较红黑树的高度次,当树中的节点非常多时,查询效率也不理想。最好的查询是,进行很少的比较次数就能够将元素找到,因此在C++11中,STL又

    2024年01月16日
    浏览(35)
  • 【C++】unordered_map和unordered_set的使用 及 OJ练习

    在前面的文章中,我们已经学习了STL中底层为红黑树结构的一系列关联式容器——set/multiset 和 map/multimap(C++98) 在C++98中,STL提供了底层为红黑树结构的一系列关联式容器,在查询时效率可达到 l o g 2 N log_2 N l o g 2 ​ N ,即最差情况下需要比较红黑树的高度次。 在C++11中,

    2024年02月11日
    浏览(31)
  • C++进阶--使用哈希表实现unordered_map和unordered_set的原理与实例

    本文将介绍如何使用哈希表来实现C++ STL库中的unordered_map和unordered_set容器。我们将会解释哈希表的基本原理,并给出具体的代码示例,帮助读者更好地理解和应用哈希表。 哈希原理讲解–链接入口 set和map的实现的文章,与unordered_map实现类似 unordered_set是一种集合存储的容器

    2024年04月09日
    浏览(37)
  • 【C++进阶】使用一个哈希桶封装出unordered_map和uordered_set

    由于要使用一个哈希桶封装出unordered_map和uordered_set,所以要对哈希桶的模版参数进行改造,由于unordered_map是kv模型,而uordered_set是k模型,所以必须在实现哈希桶的时候提供模版,在封装uordered_set和unordered_map时传入不同的模版参数。 还要要修改的是,如果同时封装出,在获得

    2024年02月12日
    浏览(25)
  • map和unordered_map区别

      map和unordered_map都是C++中的关联容器,用于存储键值对。其主要区别在于底层实现方式和性能表现。 1、底层实现方式   map内部使用红黑树(一种自平衡二叉查找树)来实现,而unordered_map则使用哈希表来实现。这意味着,在map中,元素是按照键的大小进行有序排列的,

    2024年02月16日
    浏览(27)
  • 封装unordered_set&&unordered_map

    注:实现unordered系列容器是为了学习,因此并非将全部接口实现,所以只实现部分接口 目录 哈希表的改造 模板参数列表的改造 增加迭代器操作 增加通过T获取value操作 HashTable.h的修改 unordered_set的封装 unordered_map的封装 K:关键码类型 T:不同容器T的类型不同,如果是unorder

    2024年02月05日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包