首页 > 其他分享 >map、unordered_map、set 和 unordered_set的小介绍

map、unordered_map、set 和 unordered_set的小介绍

时间:2024-11-18 19:07:46浏览次数:1  
标签:map set 键值 哈希 include unordered

1. map

  • 简介:

    map 是 C++ STL 中的关联容器,存储键值对(key-value pair),所有元素按 键值升序(或自定义排序)存储。

  • 主要特性:

    1. 底层实现:使用 红黑树 实现,提供了自动排序功能。

    2. 元素有序:插入元素后,按键值排序。

    3. 时间复杂度:插入、删除、查找:O(logn)(因为树的深度为 O(logn) )。

    4. 内存占用:较小(相比 unordered_map,红黑树的实现比哈希表节省内存)。

    5. 迭代器:提供双向迭代器,支持正向和反向遍历。

  • 常见用法:

    • 存储有序键值对。

    • 查找某个范围内的键值。

  • 举一个例子

    #include <map>
    #include <iostream>
    using namespace std;
    
    int main() {
        map<int, string> m;
        m[3] = "C";
        m[1] = "A";
        m[2] = "B";
    
        // 遍历输出
        cout << "map contents:\n";
        for (auto it : m) {
            cout << it.first << ": " << it.second << endl;
        }
    
        // 查找
        auto it = m.find(2); // 返回指向键为2的迭代器
        if (it != m.end()) {
            cout << "Found key 2: " << it->second << endl;
        }
    }
    

    输出如下:

    img

2. unordered_map

  • 简介:

    unordered_map 是 C++ STL 中的无序关联容器,用于存储键值对。其底层实现是 哈希表。

  • 主要特性:

    1. 底层实现:

    2. 使用哈希表,元素存储位置基于键的哈希值。

    3. 元素无序:元素存储顺序与插入顺序、键值大小无关。

    4. 时间复杂度:插入、删除、查找:平均 O(1),最坏

      标签:map,set,键值,哈希,include,unordered
      From: https://www.cnblogs.com/hisun9/p/18553445

相关文章

  • sqlmap主要参数
    重要参数参数描述-a,--all获取所有信息-b,--banner获取数据库管理系统的标志-current-user获取数据库管理系统的当前用户-current-db获取数据库管理系统的当前数据库-hostname获取数据库服务器的主机名称-is-dba检测DBMS当前用户是否是DBA......
  • h5端播放map4透明通道
    前言通常情况端上做刷礼物动画时,需要播放背景透明的礼物特效动画,这种情况map4相对其他json/webgl/gif/svga等等格式的动画来说体积往往更小且像素会更清晰,更能打动大哥们得打赏~,端上一般引用QGVAPlayer插件播放,而h5需要引入video-animation-player 直接上代码第......
  • Kubernetes内configmap的作用
    理解ConfigMap的基本概念定义:ConfigMap是Kubernetes用于存储非机密配置数据的一种资源对象。它允许你将配置信息与容器化应用程序分离,使得应用程序的配置更加灵活和易于管理。这些配置数据可以是环境变量、配置文件或者命令行参数等形式。类比传统配置方式:在......
  • Django中QuerySet
    1.QuerySet概念QuerySet是DjangoORM(Object-RelationalMapping)中的对象,用于表示从数据库查询出来的一组数据。可以看作是数据库查询结果的抽象表示,包含零个或多个模型实例。特性延迟加载:QuerySet是惰性的,只有在需要时才会执行真正的数据库查询。例如,调用list......
  • map 和 lambda 函数
    map和lambda的用法及规则1.map函数map是Python内置函数,用于对可迭代对象中的每个元素应用一个函数,并返回一个map对象(可以转换为其他数据类型,如列表、元组等)。语法map(function,iterable,...)参数function:需要应用的函数。iterable:一个或多个可迭代对象。......
  • ES6 Set和Map数据结构用法详解
    文章目录前言Set数据结构创建Set添加元素删除元素删除所有数据获取set的大小(类似于数组的长度)检查是否包含某个元素四种遍历set的方法1.for...of循环2.forEach方法3.转换为数组后使用for循环4.keys(),values(),entries()集合运算方法Map数据结构创建Map添加元素(设......
  • java day13 Set集合 & Map集合 & Stream流
    目录​编辑1.Set集合: 1.Set集合的特点:  2.HashSet的底层原理:​编辑  3.LinkedHashSet集合的底层原理:  4.TreeSet集合:2.Map集合: 1.Map集合概述: 2.Map集合的常用方法:3.Map集合的遍历方式:  4.Map集合的实现类:3.Stream流:1.获取流的方法:2.流......
  • 集合类源码浅析のJDK1.8ConcurrentHashMap(上篇)
    文章目录前言一、概述二、CHM的属性1、属性三、新增方法1、put2、initTable四、分段计数1、addCount2、fullAddCount3、sumCount总结前言  本篇是JDK1.8的ConcurrentHashMap源码个人学习笔记,ConcurrentHashMap(笔记中简称CHM)是一种线程安全的HashMap,1.8中废弃了......
  • 集合类源码浅析のJDK1.8ConcurrentHashMap(下篇)
    文章目录前言一、分段扩容1、addCount2、transfer3、helpTransfer二、查询二、删除总结前言  主要记录ConcurrentHashMap(笔记中简称CHM)的查询,删除,以及扩容方法的关键源码分析。一、分段扩容1、addCount  扩容的逻辑主要在addCount方法的后半段:private......
  • MapReduce经典案例————数据去重
    目录一、问题介绍二、实验工具 三、案例实现1.打开idea,单击“file->new->project”,设置项目名称为“Hadoop_test”,在对话框下部的“Advanced Settings”中设置Groupid为“cn.lyy”。​编辑2.从左侧项目结构中打开pom.xml,并输入如下依赖:​编辑 2.1pom.xml:3.从左......