首页 > 其他分享 >哈希思想

哈希思想

时间:2023-03-21 22:56:26浏览次数:29  
标签:std map multimap 哈希 思想 key log

1、什么时候使用哈希法?  

当我们需要查询一个元素是否出现过,或者一个元素是否在集合里的时候,就要第一时间想到哈希法。

2、常见的map、set、数组的优缺点:

map可以存放键值对,自动排序。(multimap、unordered_map)

数组的大小是受限制的,而且如果元素很少,而哈希值太大会造成内存空间的浪费。

set是一个集合,里面放的元素只能是一个key。

3、C++中map,有三种类型:

映射底层实现是否有序数值是否可以重复能否更改数值查询效率增删效率
std::map 红黑树 key有序 key不可重复 key不可修改 O(log n) O(log n)
std::multimap 红黑树 key有序 key可重复 key不可修改 O(log n) O(log n)
std::unordered_map 哈希表 key无序 key不可重复 key不可修改 O(1) O(1)

std::unordered_map 底层实现为哈希表,std::map 和std::multimap 的底层实现是红黑树。

同理,std::map 和std::multimap 的key也是有序的(这个问题也经常作为面试题,考察对语言容器底层的理解)。 

 

标签:std,map,multimap,哈希,思想,key,log
From: https://www.cnblogs.com/bhd123/p/17241924.html

相关文章

  • 字符串哈希笔记
    目录字符串哈希1.定义1.1Hash的思想1.2Hash的计算和改进1.3自己的常用实现2.代码实现2.1暴力版本:2.2字符串前缀和哈希参考文档字符串哈希1.定义一个把字符串映......
  • LeeCode刷题记录——哈希表
    根本没学过这个东西,被薄纱,直接躺板板了,抑郁的时候垂死病中惊坐起,赶紧上来记一下笔记。题目:给定一个字符串s,请你找出其中不含有重复字符的最长子串的长度。评论区和官方......
  • 字符串哈希函数
    1、概念哈希之所以广泛存在,是因为它能在绝大多数情况下可以在O(1)的时间复杂度中完成元素的查找。它的核心是数组,如果输入是一个自然数,那么当然可以在常数时间内搜索到自......
  • DJBX33A哈希(Hash)算法
    1DJBX33A算法原理2DJBX33A算法典型实现2.1PHP(zend_string.h)2.2Apache(apr_hash.c)2.3BerkeleyDB(src\hash\hash_func.c)2.4Python(pyhash.c)3DJBX33A......
  • 一些算法思想 及一些算法基础
    分治算法分治算法是一种高效的算法思想,它将问题分解成更小的子问题,通过解决子问题来解决原始问题。它的核心思想是将问题分解成若干个规模更小但结构相同的子问题,并且通过......
  • MySQL(八)哈希索引、AVL树、B树与B+树的比较
    Hash索引简介​ 这部分略了Hash索引效率高,为什么还要设计索引结构为树形结构?Hash索引仅能满足=、<>和IN查询,如果进行范围查询,哈希的索引会退化成O(n);而树型的有序特......
  • 代码随想录-哈希表
    哈希表介绍哈希表是一种随机存储结构,可以通过关键码来直接访问对应的数数组就是一种简单的哈希表,数组的下标就是关键码,我们可以通过数组的下标来直接访问数组中的元素通......
  • 地铁查询系统逻辑实现思路和设计思想
    在地铁查询系统中,我们先理清一下逻辑思路和设计思想,这样有助于我们项目的开发:首先看功能,我们核心的功能当然就是地铁查询,在搜索框中输入起始站和终点站,点击查询,能够得到:......
  • C++ 哈希表的总结与例题
    文章目录​​C++STL​​​​哈希表​​​​设计哈希集合​​​​设计哈希映射​​​​哈希集合​​​​例题一:只出现一次的数字​​​​例题二:快乐数​​​​哈希映射​​​......
  • 基于哈希的索引和基于树的索引的区别
    1、hash索引仅满足“=”、“IN”和“<=>”查询,不能使用范围查询因为hash索引比较的是经常hash运算之后的hash值,因此只能进行等值的过滤,不能基于范围的查找,因为经过hash算......