草庐IT

哈希环

全部标签

c++ - 我的哈希表比二进制搜索慢

我已经实现了二进制搜索、线性搜索和哈希表来比较每个时间的复杂度。问题是不知何故,当我测量时间寻找素数时,我的哈希表比二进制搜索慢得多。下面是我的代码://Makethehashtable20timesthenumberofprimenumbersHashTable::HashTable(std::vectorprimes){inttablesize=primes.size()*20;table=newstd::list[tablesize];size=tablesize;for(auto&prime:primes)this->insert(prime);}//Hashfunctioni

c++ - 函数的完美哈希函数生成器

我有一组C++函数。我想将此函数映射到哈希表中,例如:unordered_map,SomethingElse>,其中SomethingElse与这个问题无关。这组函数是以前已知的,小的(假设少于50个)和静态的(不会改变)。由于查找性能至关重要(应在O(1)中执行),我想定义一个完美的哈希函数。是否存在针对这种情况的完美哈希函数生成器?我知道存在完美的哈希函数生成器(如GPERF或CMPH),但由于我从未使用过它们,所以我不知道它们是否适合我的情况。原因:我正在尝试设计一个框架,给定一个用C++编写的程序,用户可以选择一个子集F该程序中定义的函数。对于每个f属于F,该框架实现了一个me

数据结构——哈希表

在C++容器中,map和set是经常被使用的容器,但是,我们会发现。一个是普通的map还有一个是unordered_map,这两者有什么区别呢?那就是map的底层使用的是红黑树而unordered_map底层所使用的是哈希桶,那么今天我们就来认识一下什么是哈希,以及哈希的相关知识,还有哈希表和哈希桶。1.哈希的简单介绍我们在做算法题的时候,碰到很多场景都会用到哈希,哈希其实是一种思想。比如这道题:这道题里面我们在学C语言的时候会使用一个数组来记录,这个数组的大小就是二十六个字母,来记录字符串中每个字符出现的个数,这其中我们就使用了哈希的思想,这其中通过让数组的下标与字符产生某种对应关系,让它的

c++ - std、boost 或其他具有隐式键的哈希表容器的广泛实现

如果我理解正确,std::map和std::unordered_map都会显式存储键(存储键/值对)。是否有其他一些现成可用的容器(std、boost或其他广泛实现)不会存储key,而是允许使用函数(即使用隐式key?)从存储的值中派生key。 最佳答案 std::set或std::unordered_set,具有适用于存储值类型的散列和/或比较函数。但是,查找将通过存储的值类型而不是键来完成,因此您还需要一种方法来根据键构造一个临时对象。 关于c++-std、boost或其他具有隐式键

c++ - 我将如何制作随机种子/哈希以使 Rand 实际上是随机的?

这个问题在这里已经有了答案:Isthereanalternativetousingtimetoseedarandomnumbergeneration?(10个答案)关闭6年前。我如何生成一个种子或散列来使rand实际上是随机的?每次它选择一个数字时我都需要改变它。C++的新手,所以我不太确定该怎么做。谢谢!:D

c++ - 将 MSVS 2010 项目转换为 MSVS 2012 RC 但出现错误 "The C++ standard doesn' t 为此类型提供哈希”

我有一个项目在MSVS2010SP1下运行良好。我正在尝试将其转换为MSVS2012RC。我不得不更改一些内容,主要与C++header/lib路径和MFC自定义内容有关。但我还有最后一个障碍需要清除。在MSVC2010中,我使用了很多unordered_map,int>或map,int>。它编译得很好。但是在MSVS2012中,我只是得到这个错误:“C++标准不提供这种类型的散列”在网上搜索了一下,发现MSVS2012应该更接近C++11标准,标准只定义了基本类型的哈希函数和定义的4种字符串类型(其中string和wstring,但不包括basic_string)。所以我将所有bas

c++ - 从哪里获取 GitHub 版本的 MD5 哈希?

我希望从这里获取tar.gzGitHub版本的MD5哈希值:https://github.com/jbeder/yaml-cpp/releases想在我的CMake中使用它。有谁知道我在哪里可以得到它?我无法通过Google找到很多解决方案。 最佳答案 作为VertigoRay建议hisanswer,我通过support@github.com给GitHub发了邮件。Subject:Suggestion:ShowthechecksumofeachreleaseForexample,Iwanttodownloadareleasefrom

Leetcode刷题第七天-回溯-哈希

332:重新岸炮行程链接:332.重新安排行程-力扣(LeetCode)机场字典:{起飞机场:[到达机场的列表]}去重:到达机场列表,i>0时,当前机场和上一个机场相等,continue1classSolution:2deffindItinerary(self,tickets:List[List[str]])->List[str]:3if(nottickets):returntickets4targets={}5foriintickets:6if(i[0]notintargets.keys()):targets[i[0]]=[]7targets[i[0]].append(i[1])8forii

c++ - 制作 C++ 哈希表的最佳策略,线程安全

(我对实现的设计感兴趣,而不是一个可以完成所有工作的现成结构。)假设我们有一个HashTable类(不是作为树实现的哈希映射而是哈希表)并说有八个线程。假设读写比约为100:1或更好的1000:1。情况A)只有一个线程是写入者,而其他线程(包括写入者)可以从HashTable中读取(它们可能简单地遍历整个哈希表)情况B)所有线程都是相同的,并且都可以读/写。有人可以建议最好的策略来使类线程安全并考虑以下因素1.最高优先级,最小锁争用2.最少锁数的第二优先级到目前为止,我的理解是:一个BIG读写锁(信号量)。特殊化信号量,以便在情况B中可以有八个实例writer-resource,其中每

C++&&数据结构——哈希表

目录一,unordered系列容器1.1关于unordered系列1.2unordered_set1.4unordered_map1.5性能对比二,哈希2.1哈希概念2.2常用哈希函数2.3 哈希冲突及解决2.3.1闭散列2.3.2开散列2.4哈希表扩容2.4.1闭散列扩容2.4.2开散列扩容三,哈希表模拟实现3.1映射函数实现3.2闭散列哈希表3.3开散列哈希表一,unordered系列容器1.1关于unordered系列在C++98中,STL提供了以红黑树为底层的一系列关联式容器,查询时效率可达到logN,但是当树中节点非常多时,查询效率也不理想,所以在C++11中,STL提供了unord