首页 > 其他分享 >unordered_map

unordered_map

时间:2022-10-14 08:56:28浏览次数:40  
标签:map 存储 容器 无序 键值 unordered

Ⅰ.unordered_map

从C++11 开始,标准库又引入了一类容器,即无序关联式容器。无序关联式容器,又称哈希容器(unordered_map 容器),直译过来就是 “无序 map 容器” 的意思。所谓 “无序”,指的是 unordered_map 容器不会像 map 容器那样对存储的数据进行排序。
换句话说,unordered_map 容器和 map 容器仅有一点不同,即 map 容器中存储的数据是有序的,而 unordered_map 容器中是无序的。
具体来讲,unordered_map 容器和 map 容器一样,以键值对,即 pair类型 的形式存储数据,存储的各个键值对的键互不相同且不允许被修改。
但由于 unordered_map 容器底层采用的是哈希表存储结构,该结构本身不具有对数据的排序功能,所以此容器内部不会自行对存储的键值对进行排序。 因为,无序容器是 C++ 11 标准才正式引入到 STL 标准库中的,这意味着如果要使用该类容器,则必须选择支持 C++ 11 标准的编译器。
需要注意的是:map和unordered_map有本质上的不同:关联式容器的底层实现采用的树存储结构,更确切的说是红黑树结构;无序容器的底层实现采用的是哈希表的存储结构。
总的来说,实际场景中如果涉及大量遍历容器的操作,建议首选关联式容器;反之,如果更多的操作是通过键获取对应的值,则应首选无序容器。

特点:基于底层实现采用了不同的数据结构,因此和关联式容器相比,无序容器具有以下 2 个特点:

  • 无序容器内部存储的键值对是无序的,各键值对的存储位置取决于该键值对中的键。
  • 和关联式容器相比,无序容器擅长通过指定键查找对应的值(平均时间复杂度为 \(O(1)\));但对于使用迭代器遍历容器中存储的元素,无序容器的执行效率则不如关联式容器。
#include<bits/stdc++.h>
using namespace std;

unordered_map<int,int>mp1; 

int main(){
    mp1[43] = 123;
    mp1[1] = 1234;
    for(unordered_map<int,int>::iterator it = mp1.begin();it != mp1.end();it++){
        cout<<it->first<<" "<<it->second<<endl;
    }
    return 0;
}





































STL 迭代器有的可以自减,有的不可以;比如 unordered_map 的迭代器是不可以自减的。

标签:map,存储,容器,无序,键值,unordered
From: https://www.cnblogs.com/oryi/p/16790460.html

相关文章

  • 布隆过滤器用 C# 实现 Bitmap
    从位图到布隆过滤器,C#实现 前言本文将以C#语言来实现一个简单的布隆过滤器,为简化说明,设计得很简单,仅供学习使用。感谢@时总百忙之中的指导。布隆过滤器简介布隆......
  • map映射
    Ⅰ.mapmap可以翻译为映射,是STL中常用的容器。其实,数组就是一种映射。比如inta[100];定义了一个int到int的映射,而a[5]=25;就是把5映射到25。数组总是将i......
  • 算法简介及二分法、三元表达式、匿名函数、内置函数max、map、reduce
    目录作业讲解算法简介及二分法三元表达式匿名函数常见内置函数作业作业讲解1.利用有参装饰器编写多种用户登录校验策略#1.利用有参装饰器编写多种用户登录校验策略"""......
  • Nmap抓包分析与绕过Windows防火墙
    前言在打靶场的过程中使用Nmap时发现点小问题,借此机会详细分析下情况,于是有了这篇文章。本文包含以下内容:Nmap抓包分析内网下绕过Windows防火墙扫描存活主机这......
  • Nmap常用方法
    1、扫描单个目标地址 在Nmap后面直接添加目标地址即可扫描 nmap目标地址  2、扫描多个目标地址 如果目标不在同一网段,或在同一网段但不连续且数量不多,可以使用该......
  • 【STM32H7教程】第10章 STM32H7的FLASH,RAM和栈使用情况(map和htm文件)
    第10章      STM32H7的FLASH,RAM和栈使用情况(map和htm文件)本章为大家介绍编译器生成的map和htm文件进行解析,通过这两个文件可以让大家对工程代码的认识程度提升一个档......
  • HashMap可以设置初始化容量大小吗?如果设置为20是多少?
    这个是在我在面试中遇到的问题,是关于HashMap;个人学习笔记记录。HashMap设置初始化容量20的具体流程:答:是可以设置初始容量大小,设置为20,容量为32,2的n次方。1、设置初始化......
  • JS map 三种不同的写法返回值
    functioncreateData(){//如果不fill循环默认会跳过空值returnnewArray(1000).fill(null).map((v,i)=>({name:`name${i+1}`}));}functionC......
  • PPM文件格式 Portable Pixmap Format)
    PPM文件格式详解_kinghzkingkkk的博客-CSDN博客_ppm格式https://blog.csdn.net/kinghzkingkkk/article/details/70226214PPM图像格式是由JefPoskanzer在1991年所创造的......
  • HashMap index 计算以及 map 扩容旧值如何处理
    首先index如何计算   我们都知道添加一个Entry进Map其实就是添加一个不可重复的key进入散链表中,    在计算的时候首先会获取到index的hash值而ha......