草庐IT

unordered-multiset

全部标签

c++ - 为什么有人会使用 set 而不是 unordered_set?

C++0x正在引入unordered_set,它可以在boost和许多其他地方使用。我的理解是unordered_set是具有O(1)查找复杂度的哈希表。另一方面,set只不过是一棵具有log(n)查找复杂度的树。为什么会有人使用set而不是unordered_set?即是否需要set了? 最佳答案 无序集必须通过以下几种方式为其O(1)平均访问时间付费:set比unordered_set使用更少的内存存储相同数量的元素。对于少量元素,在set中查找可能比unordered_set中的查找更快.尽管unordered_set的平均情

c++ - 在 C++ std::unordered_map 中预分配桶

我正在使用来自gnu++0x的std::unordered_map来存储大量数据。我想为大量元素预先分配空间,因为我可以限制使用的总空间。我想做的是打电话:std::unordered_mapm;m.resize(pow(2,x));其中x是已知的。std::unordered_map不支持这个。如果可能,我宁愿使用std::unordered_map,因为它最终会成为标准的一部分。其他一些限制:需要可靠的O(1)访问和map变异。所需的散列和比较函数已经是非标准的并且有些昂贵。O(logn)突变(与std::map一样)太昂贵了。->昂贵的哈希和比较也使得基于摊销的增长方式过于昂贵。

c++ - 在 C++ std::unordered_map 中预分配桶

我正在使用来自gnu++0x的std::unordered_map来存储大量数据。我想为大量元素预先分配空间,因为我可以限制使用的总空间。我想做的是打电话:std::unordered_mapm;m.resize(pow(2,x));其中x是已知的。std::unordered_map不支持这个。如果可能,我宁愿使用std::unordered_map,因为它最终会成为标准的一部分。其他一些限制:需要可靠的O(1)访问和map变异。所需的散列和比较函数已经是非标准的并且有些昂贵。O(logn)突变(与std::map一样)太昂贵了。->昂贵的哈希和比较也使得基于摊销的增长方式过于昂贵。

c++ - unordered_map/unordered_set 中元组的通用哈希

为什么不std::unordered_map,string>只是开箱即用?必须为tuple定义散列函数很繁琐。,例如templatestructdo_hash>{size_toperator()(std::tupleconst&tt)const{...}};Buildinganunorderedmapwithtuplesaskeys(MatthieuM.)展示了如何为boost::tuple自动执行此操作.有没有在不使用可变参数模板的情况下对c++0x元组执行此操作?这当然应该在标准中:( 最佳答案 这适用于gcc4.5,允许所有包

c++ - unordered_map/unordered_set 中元组的通用哈希

为什么不std::unordered_map,string>只是开箱即用?必须为tuple定义散列函数很繁琐。,例如templatestructdo_hash>{size_toperator()(std::tupleconst&tt)const{...}};Buildinganunorderedmapwithtuplesaskeys(MatthieuM.)展示了如何为boost::tuple自动执行此操作.有没有在不使用可变参数模板的情况下对c++0x元组执行此操作?这当然应该在标准中:( 最佳答案 这适用于gcc4.5,允许所有包

c++ - std::unordered_map::find 使用不同于 Key 类型的类型?

我有一个unordered_map使用字符串类型作为键:std::unordered_mapmap;一个std::hash为string提供特化,以及ASA适合operator==.现在我还有一个“字符串View”类,它是一个指向现有字符串的弱指针,避免了堆分配:classstring_view{string*data;size_tbegin,len;//...};现在我希望能够使用string_view来检查map中是否存在键。目的。不幸的是,std::unordered_map::find需要Key参数,不是通用的T论据。(当然,我可以将一个“提升”为string,但这会导致我想避

c++ - std::unordered_map::find 使用不同于 Key 类型的类型?

我有一个unordered_map使用字符串类型作为键:std::unordered_mapmap;一个std::hash为string提供特化,以及ASA适合operator==.现在我还有一个“字符串View”类,它是一个指向现有字符串的弱指针,避免了堆分配:classstring_view{string*data;size_tbegin,len;//...};现在我希望能够使用string_view来检查map中是否存在键。目的。不幸的是,std::unordered_map::find需要Key参数,不是通用的T论据。(当然,我可以将一个“提升”为string,但这会导致我想避

c++ - "multiset"& "multimap"- 有什么意义?

正如问题所述...我不明白multisets的意思/multimaps.那么,目的是什么? 最佳答案 一些用例:多map以邮政编码为key,所有拥有该邮政编码的人以账户ID为key,该人/账户的所有未结订单字典,每个关键字都有不同的解释多组本质上是一个带有键和整数计数的映射。一个店铺的库存,所有产品都有自己的key和数量仍然可用的是值(value)店铺累计销售数据,每售出一件商品产品ID被添加到多组中,从而增加了销售量 关于c++-"multiset"&"multimap"-有什么意义?

c++ - "multiset"& "multimap"- 有什么意义?

正如问题所述...我不明白multisets的意思/multimaps.那么,目的是什么? 最佳答案 一些用例:多map以邮政编码为key,所有拥有该邮政编码的人以账户ID为key,该人/账户的所有未结订单字典,每个关键字都有不同的解释多组本质上是一个带有键和整数计数的映射。一个店铺的库存,所有产品都有自己的key和数量仍然可用的是值(value)店铺累计销售数据,每售出一件商品产品ID被添加到多组中,从而增加了销售量 关于c++-"multiset"&"multimap"-有什么意义?

unordered_map 中字符串的 C++ 哈希函数

似乎C++在标准库中没有字符串的散列函数。这是真的吗?什么是在unordered_map中使用字符串作为键的工作示例,可以与任何c++编译器一起使用? 最佳答案 C++STL提供模板specializationsstd::hash用于各种字符串类。您可以将std::string指定为std::unordered_map:的键类型#include#includeintmain(){std::unordered_mapmap;map["string"]=10;return0;} 关于unor