博客
关于我
C++ STL之map与unordered_map
阅读量:815 次
发布时间:2019-03-25

本文共 669 字,大约阅读时间需要 2 分钟。

map是STL中的一个关联容器,它提供了一对一的数据处理能力。每个key可以在map中仅出现一次,而value则与对应的key配对。map内部使用红黑树进行管理,这种树是一种平衡二叉树,能够保证key的数据是有序排列的。在操作方面,map支持插入、查询、删除等功能,其时间复杂度均为O(logN)。为了使用map,需要为key定义operator<,从而实现比较操作。

unordered_map与map类似,但并不保证key的顺序。其内部使用哈希表来存储信息。不同之处在于,unordered_map根据key的哈希值来组织元素存储,即key的大小和顺序无关。为了使用unordered_map,需要定义hash_value函数并重载operator==,以便哈希表能够正确比较元素。unordered_map的底层采用了哈希表的实现方法,其优点是能够在常数时间内完成查找和存储操作,时间复杂度为O(1),这使得它在大数据量下表现尤为优异。然而,哈希表需要使用较多的内存空间来存储大量的哈希表单元(通常是一个大型的数组)。

哈希表的基本原理是使用一个下标范围较大的数组作为存储介质。根据key的值,设计一个哈希函数可以将key映射到一个函数值(即数组中的下标),从而找到对应的存储位置。这种方法被称为直接定址。然而,由于哈希函数可能会导致不同key计算出相同的函数值,引发冲突,这就需要哈希表的解决冲突机制。在解决冲突方面,拉链法是最常用的技术。它通过将多个溢出链(称为拉链)挂接在单链表的头部,来将不同的key映射到同一个哈希表单元。

转载地址:http://rmsyk.baihongyu.com/

你可能感兴趣的文章
nyoj 91 阶乘之和(贪心)
查看>>
nyoj------203三国志
查看>>
NYOJ-525 一道水题
查看>>
NYOJ127星际之门(一)
查看>>
nyoj58 最少步数
查看>>
N皇后问题
查看>>
N皇后问题
查看>>
n种方式教你用python读写excel等数据文件
查看>>
OAuth 2.0 MAC Tokens
查看>>
OAuth 及 移动端鉴权调研
查看>>
OAuth2 + Gateway统一认证一步步实现(公司项目能直接使用),密码模式&授权码模式
查看>>
OAuth2 Provider 项目常见问题解决方案
查看>>
OAuth2 vs JWT,到底怎么选?
查看>>
Vue.js 学习总结(14)—— Vue3 为什么推荐使用 ref 而不是 reactive
查看>>
oauth2-shiro 添加 redis 实现版本
查看>>
OAuth2.0_JWT令牌-生成令牌和校验令牌_Spring Security OAuth2.0认证授权---springcloud工作笔记148
查看>>
OAuth2.0_JWT令牌介绍_Spring Security OAuth2.0认证授权---springcloud工作笔记147
查看>>
OAuth2.0_介绍_Spring Security OAuth2.0认证授权---springcloud工作笔记137
查看>>
OAuth2.0_完善环境配置_把资源微服务客户端信息_授权码存入到数据库_Spring Security OAuth2.0认证授权---springcloud工作笔记149
查看>>
OAuth2.0_授权服务配置_Spring Security OAuth2.0认证授权---springcloud工作笔记140
查看>>