草庐IT

c++ - 我可以使用成员变量作为 hash_set/hash_map 的键吗?

我有这样一个类:classFoo{longlongId;stringx;stringy;//othermembervariablesandfunctions};我想将其存储在hash_set中(或hash_map),但使用Id成员变量作为插入和搜索的键。我不确定我该怎么做。我想到了以下几种方法,但都不是很好:1)我可以编写一个自定义散列函数,使用Id对对象进行散列,但我不能使用find()hash_set上的方法通过Id(longlong)查找项目,因为它需要Foo要传入的对象。2)我可以复制Id并创建一个hash_map而不是hash_set但我有1亿个这些对象的实例,所以我不想复制

c++ - 为模板化 key 专门化 std::hash

我试图为我自己的类型专门化哈希,一个模板化的键。我是基于cppreference.我收到编译错误“C++标准不提供此类型的散列”。我想我只是做错了。编译器甚至可以支持这种模板吗?namespacestd{templatestructMyKey{constSTypefrom;constATypeconsume;constPTypepop;};templatestructhash>{size_toperator()(MyKeyconst&key){std::hash()(key.from);std::hash()(key.consume);std::hash()(key.pop);}};}

c++ - boost hash 为不同的输入返回相同的值

我有两个对象,Account和Transaction,其中Transaction是唯一的一对Account和一个递增的ID号。我想使用boost::hash来获取这些的唯一值,并根据说明重载hash_value方法:http://www.boost.org/doc/libs/1_53_0/doc/html/hash/custom.htmlclassAccount{...};classTransaction{Accountaccount;unsignedintid;};Account的hash_value方法工作正常,并且返回的值对于给定的帐户始终是唯一的,但是要生成唯一的对,Trans

c++11 std::hash 函数对象类线程安全

在c++11中是在中声明的散列函数类对象线程安全?例如,从多个线程调用此函数是否安全?size_thash1(conststd::string&s){std::hashstr_hash;returnstr_hash(s);}或者,如果有一个全局对象std::hashstr_hash_global;,那么从多个线程调用第二个函数是否安全?size_thash2(conststd::string&s){returnstr_hash_global(s);} 最佳答案 标准库promise,如果您只在标准库对象上调用const限定的成员函数

c++ - 未定义的 md5 引用

这个问题在这里已经有了答案:HowcanIuseopenssl/md5inC++tohashastring?(2个答案)关闭8年前。#includevoidmMD5(unsignedchar*packet,intsize){unsignedchar*res;MD5((unsignedchar*)&packet,size,(unsignedchar*)&res);for(inti=0;i我收到错误:对MD5的undefinedreference谁能帮帮我?

c++ -/MD 和/MDd(使用运行时库)有什么区别?

当我在我的代码中添加以下行时:std::stringsFrameTag我收到以下链接器错误:Error34errorLNK2005:"public:__thiscallstd::basic_string,classstd::allocator>::~basic_string,classstd::allocator>(void)"(??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ)alreadydefinedinVFPAnalyzerApi.lib(VFPEvaluation.obj)msvcpr

c++ - 我可以覆盖 std::hash 吗?

我可以用我自己在C++11中定义的std::hash替换std::hash的实际实现吗?我的意思是从我的代码库开始,不涉及标准库。在这种情况下我看不到虚函数/多态性有任何用处,所以我想我无论如何都不能改变std::hash的定义? 最佳答案 您可以为特定类型专门化哈希。参见here和here例如像这样namespacestd{templatestructhash{size_toperator()(constFoo&x)const{/*yourcodehere,e.g."returnhash()(x.value);"*/}};}如果你

c++ - 'hash_map' 未在此范围内使用 g++ 4.2.1 声明

我正在尝试使用sgihash_map。#include#include#include#include#include#include#includeusingnamespacestd;structeqstr{booloperator()(constchar*s1,constchar*s2)const{returnstrcmp(s1,s2)==0;}};intmain(){hash_map,eqstr>months;months["january"]=31;months["february"]=28;months["march"]=31;months["april"]=30;month

c++ - C++中MD5的快速实现

首先,要明确一点,我知道C++中存在大量MD5实现。这里的问题是我想知道是否比较哪个实现比其他实现更快。由于我在大小大于10GB的文件上使用此MD5哈希函数,因此速度确实是这里的主要问题。 最佳答案 我认为avakar试图表达的观点是:在现代处理能力下,硬盘驱动器的IO速度是瓶颈,而不是哈希计算。获得更高效的算法对您没有帮助,因为这不是(可能)最慢的点。如果您正在做任何特殊的事情(例如1000轮),那么它可能会有所不同,但如果您只是计算文件的哈希值。您需要加快IO,而不是数学。 关于c+

c++ - 如何在此代码 C++ 中返回字符串中的 md5 哈希值?

我有这段代码可以正确显示字符串的md5。我更喜欢向函数返回一个字符串,但是我在将md5的值转换为我的字符串时遇到了一些问题。这是代码:stringcalculatemd5(stringmsg){stringresult;constchar*test=msg.c_str();inti;MD5_CTXmd5;MD5_Init(&md5);MD5_Update(&md5,(constunsignedchar*)test,msg.length());unsignedcharbuffer_md5[16];MD5_Final(buffer_md5,&md5);printf("Input:%s",t