我正在使用来自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一样)太昂贵了。->昂贵的哈希和比较也使得基于摊销的增长方式过于昂贵。
我正在使用来自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一样)太昂贵了。->昂贵的哈希和比较也使得基于摊销的增长方式过于昂贵。
为什么不std::unordered_map,string>只是开箱即用?必须为tuple定义散列函数很繁琐。,例如templatestructdo_hash>{size_toperator()(std::tupleconst&tt)const{...}};Buildinganunorderedmapwithtuplesaskeys(MatthieuM.)展示了如何为boost::tuple自动执行此操作.有没有在不使用可变参数模板的情况下对c++0x元组执行此操作?这当然应该在标准中:( 最佳答案 这适用于gcc4.5,允许所有包
为什么不std::unordered_map,string>只是开箱即用?必须为tuple定义散列函数很繁琐。,例如templatestructdo_hash>{size_toperator()(std::tupleconst&tt)const{...}};Buildinganunorderedmapwithtuplesaskeys(MatthieuM.)展示了如何为boost::tuple自动执行此操作.有没有在不使用可变参数模板的情况下对c++0x元组执行此操作?这当然应该在标准中:( 最佳答案 这适用于gcc4.5,允许所有包
我有一个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,但这会导致我想避
我有一个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++在标准库中没有字符串的散列函数。这是真的吗?什么是在unordered_map中使用字符串作为键的工作示例,可以与任何c++编译器一起使用? 最佳答案 C++STL提供模板specializationsstd::hash用于各种字符串类。您可以将std::string指定为std::unordered_map:的键类型#include#includeintmain(){std::unordered_mapmap;map["string"]=10;return0;} 关于unor
似乎C++在标准库中没有字符串的散列函数。这是真的吗?什么是在unordered_map中使用字符串作为键的工作示例,可以与任何c++编译器一起使用? 最佳答案 C++STL提供模板specializationsstd::hash用于各种字符串类。您可以将std::string指定为std::unordered_map:的键类型#include#includeintmain(){std::unordered_mapmap;map["string"]=10;return0;} 关于unor
我目前有很多如下代码:std::unordered_mapmy_dict;...//Ifthekeydoesexistinthedictionaryif(my_dict.count(key)==1){my_dict[key]=value;}//Ifitsanewkeyelse{my_dict.insert(std::make_pair(key,value));}有什么方法可以通过每次覆盖值来加快速度? 最佳答案 您只需这样做(对于map和unordered_map)mydict[key]=value;
我目前有很多如下代码:std::unordered_mapmy_dict;...//Ifthekeydoesexistinthedictionaryif(my_dict.count(key)==1){my_dict[key]=value;}//Ifitsanewkeyelse{my_dict.insert(std::make_pair(key,value));}有什么方法可以通过每次覆盖值来加快速度? 最佳答案 您只需这样做(对于map和unordered_map)mydict[key]=value;