文章 2024-05-07 来自:开发者社区

【C++入门到精通】哈希 (STL) _ unordered_map _ unordered_set [ C++入门 ]

前言 欢迎各位大佬们的关顾,本文将介绍unordered系列容器以及其中的两个重要成员:unordered_map和unordered_set。unordered_map是一种无序的关联容器,它使用哈希表来存储键值对,并提供高效的插入、查找和删除操作。在本文中,我们将首先介绍unordered_map的基本概念和特点,然后详细讲解其接口和用法。接下来,我们将介绍unordered_set...

【C++入门到精通】哈希 (STL) _ unordered_map _ unordered_set [ C++入门 ]
文章 2024-02-06 来自:开发者社区

用C++实现一个哈希桶并封装实现 unordered_map 和 unordered_set

哈希桶,又叫开散列法。开散列法又叫链地址法(开链法),首先对关键码集合用散列函数计算散列地址,具有相同地址的关键码归于同一子集合,每一个子集合称为一个桶,各个桶中的元素通过一个单链表链接起来,各链表的头结点存储在哈希表中。具体如下图例: ...

用C++实现一个哈希桶并封装实现 unordered_map 和 unordered_set
文章 2023-11-24 来自:开发者社区

C++ unordered_map和unordered_set的使用

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

文章 2023-11-14 来自:开发者社区

【C++从0到王者】第三十七站:模拟unordered_map和unordered_set

一、哈希表的修改如下是我们一开始的哈希表namespace hash_bucket { template<class K,class V> struct HashNode { pair<K, V> _kv; HashNode<K, V>* _next = nullptr; HashNode(const pair<K, ...

【C++从0到王者】第三十七站:模拟unordered_map和unordered_set
文章 2023-10-11 来自:开发者社区

【C++】哈希表的改造——unordered_map和unordered_set的模拟实现(下)

3. 面试题实战3.1 哈希切割❓ 给一个超过100G大小的log file, log中存着IP地址, 设计算法找到出现次数最多的IP地址?✅ 找到次数这种问题,我们首先想到的就是map,但是IP地址一般是127.0.0.1这种类型,超过100G的内容没办法放在一个map中,所以没有办法这样使用。那么我们需要做的事情就是将这内容进行切分,然后对切分的小文件进行次数统计。注意,这里的切分是有一些讲....

【C++】哈希表的改造——unordered_map和unordered_set的模拟实现(下)
文章 2023-10-11 来自:开发者社区

【C++】哈希表的改造——unordered_map和unordered_set的模拟实现(中)

1.5 unordered_map&amp;unordered_set的封装实现在上文中,我们完善了unordered系列容器的底层:哈希桶的代码,现在哈希桶的底层就能够通过传出的参数类型不行而同时支持map和set的实现了。现在简易实现unordered系列容器就非常简单了,直接调用接口即可//unordered_map #pragma once #include "BucketHash.hp....

【C++】哈希表的改造——unordered_map和unordered_set的模拟实现(中)
文章 2023-10-11 来自:开发者社区

【C++】哈希表的改造——unordered_map和unordered_set的模拟实现(上)

1. unordered系列的容器封装在C++11中,增加了unordered系列的容器,其底层就是哈希原理。在之前的博客内容中,我们实现了哈希的代码部分,包括闭散列和开散列两种。由于闭散列的局限性,所以C++11标准库是采用开散列的方式封装了unordered系列容器,接下来我们将使用之前实现的**哈希桶(开散列)**代码对unordered系列的容器进行改写与封装。1.1 改造1:模版参数类....

文章 2023-06-08 来自:开发者社区

【C++】哈希表特性总结及unordered_map和unordered_set的模拟实现

前言unordered系列关联式容器是C++11中新增的一类容器,包括unordered_map,unordered_set,unordered_multimap和unordered_multiset。它们的底层实现是哈希表,可以快速地查找和插入元素,时间复杂度为O(1)。它们的元素是无序的,因此遍历时元素的顺序是不确定的。它们的使用方式和红黑树结构的关联式容器(如map和set)基本类似,只是....

【C++】哈希表特性总结及unordered_map和unordered_set的模拟实现
文章 2023-05-22 来自:开发者社区

【C++】开散列哈希表封装实现unordered_map和unordered_set

在未达成目的之前,一切具有诱惑力的事物都显得那么不堪一击一、unordered系列关联式容器1.在C++98中,STL提供了底层为红黑树结构的一系列关联式容器,在查询时效率可达到l o g 2 N log_2 Nlog 2 N,即最差情况下需要比较红黑树的高度次,当树中的节点非常多时,查询效率也不理想。最好的查询是,只要进行很少的比较次数就能够将元素找到,因此在C++11中,STL又提供了4个u....

【C++】开散列哈希表封装实现unordered_map和unordered_set
文章 2023-02-08 来自:开发者社区

【C++】哈希表 | 闭散列 | 开散列 | unordered_map 和 unordered_set 的模拟实现(下)

现在代码已经写得差不多了,那如果我们想用上面的代码统计出现次数可以吗?很明显不可以,因为字符串不能够取模。那么我们可以给HashTable增加一个仿函数Hash,其可以将不能取模的类型转成可以取模的类型。template <class K> struct HashFunc { size_t operator()(const K& key) { return k...

【C++】哈希表 | 闭散列 | 开散列 | unordered_map 和 unordered_set 的模拟实现(下)

本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。

开发与运维

集结各类场景实战经验,助你开发运维畅行无忧

+关注