草庐IT

unordered-set

全部标签

c++ - unordered_map 在 VS10 中抛出 bad_alloc 但在 VS9 中没有,这是一个错误吗?

同时writingapost关于projecteuler's14thproblem我遇到了VC9和VC10之间的行为差​​异。以下代码在VC9中运行正常,但在VC10中std::unordered_map抛出bad_alloc异常。奇怪的是,如果我从异常中恢复过来,future的分配将会成功(容器的大小继续增长)。另外,如果我使用boost::unordered_map,它在两个编译器中都能正常工作。关于实际内存使用情况,我在一台有4GBRAM的机器上运行(正在使用1.7),VC9版本在完成任务之前获得了大约810MB的内存,而VC10版本在大约658MB时崩溃了。这是VC10中的错误

c++ - unordered_map 使用什么位散列函数?

C++0x的unordered_map默认使用什么位散列?std::hash函数返回size_t。这是否意味着unordered_map使用16位哈希函数? 最佳答案 std::unordered_set默认使用std::hash。如果std::size_t对你来说是16位的,那么我猜它确实使用了16位哈希。在16位机器上,我希望unordered_map::max_size()足够低以至于使用这样一个弱散列不会有问题。 关于c++-unordered_map使用什么位散列函数?,我们在

c++ - 如何使用非 STL 类型(例如来自 ICU 的 UnicodeString)创建 unordered_map?

我希望能够做到这一点:std::unordered_mapmymap;但是,当我这样做(并且开始使用它)时,我遇到了“无法将size_t转换为UnicodeString”的错误。所以我环顾四周,readuponunorderedcontainers.这篇博文指出我需要提供std::hash的特化,所以我就是这么做的:namespacestd{templateclasshash{public:size_toperator()(consticu::UnicodeString&s)const{return(size_t)s.hashCode();}};};虽然不完美,但满足要求。但是,现在我

使用 g++ 4.6 和 boost::unordered_map 的 C++11 相关编译错误

我有一段C++代码会因编译错误而失败,除非它在​​C++11模式下运行,但我无法弄清楚为什么会这样,因为代码没有(明确地)使用C++11特点:#include#include#includestructSomeStruct{boost::unordered_mapintMap;};intmain(intargc,constchar*argv[]){std::vectorvals;vals.resize(100);}在使用gcc4.6.3-1ubuntu5和boost1.48的Ubuntu12.0464位机器上编译时:g++test.cpp然后我得到这个编译错误:Infileinclud

c++ - 将某些内容存储到 unordered_map 时出现浮点异常

我正在使用unordered_map作为C++中的HashMap,但每当我尝试在其中存储任何内容时,我都会得到:Floatingpointexception:8谁能指出错误是什么?以下是我如何初始化我的map(table_entry只是一个结构):std::tr1::unordered_mapforwarding_table;然后我在做一个条目:unsignedshortdest_id=0;table_entry*entry=(table_entry*)malloc(sizeof(table_entry));forwarding_table[dest_id]=entry;我的结构定义是

C++ : generate all subsets from set with one condition

我正在尝试编写代码,通过一个条件从集合中生成所有子集,例如如果我有threshold=2,并且设置了三个:1,2,3,4,51,3,51,3,4然后程序会输出:第一次迭代时的生成集:1=numberoffrequency=32=numberoffrequency=13=numberoffrequency=34=numberoffrequency=25=numberoffrequency=2由于数字2第二次迭代时的生成集:1,3=numberoffrequency=31,4=numberoffrequency=21,5=numberoffrequency=23,4=numberoffre

Redis 数据类型及其常用命令一(string、list、set、zset、hash)

1、简介    Redis的常用数据类型有十种,分别为:string、list、set、zset、hash、geo、hyperloglog、bitmap、bitfield、stream。熟练使用各种数据类型,能够快速结合场景进行使用。注:我们所说的数据类型是指value的数据类型,key都是字符串。所有类型的命令查看:help@数据类型;例如help@string2、Redis的key常用命令#1、查看当前库所有keykeys*#2、判断某个key是否存在existskey#3、查看key的类型是什么typekey#4、删除指定的key,会发生阻塞delkey#5、非阻塞删除,仅仅将key从k

c++ - 遍历 unordered_set 的效率如何?

遍历unordered_set是否需要查看哈希表的每个桶?如果是这样,那不是很低效吗?如果我想频繁迭代一个集合但仍然需要在O(1)时间内删除,unordered_set仍然是最好的数据结构吗? 最佳答案 碰巧,std::unordered:set的常见实现将所有元素链接在一起,就像std::forward_list所做的那样,因此遍历容器基本上是等价的遍历列表(详情here)。在任何情况下,如有疑问,请分析您的程序并查看结果是否满足您的需求。 关于c++-遍历unordered_set的

c++ - C++ 标准是否为 unordered_set 定义了桶的结构?

当计算出unordered_set中某个元素的哈希值时,它会与其他不同但哈希值相同的元素一起放入“桶”中。我的经验是,这样一个桶中的元素是存储在一个单向链表中的。这意味着,在哈希函数不佳的存储桶内搜索时,它会变得非常慢。单向链表是标准的要求还是只是一种可能的实现方式?可以用set作为桶来实现unordered_set吗? 最佳答案 标准规定了要求和保证,但没有明确强制底层数据结构和算法。N4140§23.2.5[unord.req]/1Unorderedassociativecontainersprovideanabilityfor

c++ - 仅使用 get 或 set 的原始类型的线程安全威胁是否被夸大了?

在过去的一周里,我在工作中一直在争论一个系统,在这个系统上,Cortex-A9上的double是从多个线程获取和设置的,没有线程安全的提示。它似乎工作正常,经过一些测试后,我无法让我的桌面在使用__int128的简单测试中失败。读取错误值的几率是否非零?如果可能性很大而我没有做对?任何在现代x86_64机器上反复失败的示例代码都很棒。但仅对基本类型使用get/set。 最佳答案 尝试运行这个:#include#include#includestd::arraysharedArray;voidtaskOne(){while(true)