草庐IT

unordered_multimap

全部标签

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

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

c++ - STL::multimap - 我如何获取数据组?

Multimap本质上具有按键排序的数据组。我想要一种方法,通过它我可以访问这些单独的组并获取它们的汇总值。例如,在std::multimap我存储{"Group1",1},{"Group1",2},{"Group1",3},{"Group2",10},{"Group2",11},{"Group2",12}存储了这些值后,我应该能够迭代这个multimap并获得每个“组”的聚合值。问题是STL中没有定义任何函数来以这种方式访问​​MultiMaps。我可以使用lower_bound,upper_bound手动迭代multimap并汇总组的内容,但我希望在STL中已经定义了更好的方法?任

c++ - STL::multimap - 我如何获取数据组?

Multimap本质上具有按键排序的数据组。我想要一种方法,通过它我可以访问这些单独的组并获取它们的汇总值。例如,在std::multimap我存储{"Group1",1},{"Group1",2},{"Group1",3},{"Group2",10},{"Group2",11},{"Group2",12}存储了这些值后,我应该能够迭代这个multimap并获得每个“组”的聚合值。问题是STL中没有定义任何函数来以这种方式访问​​MultiMaps。我可以使用lower_bound,upper_bound手动迭代multimap并汇总组的内容,但我希望在STL中已经定义了更好的方法?任

c++ - 在不使用 if 的情况下插入/更新 std::unordered_map 元素的最快方法是什么?

我目前有很多如下代码: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;

c++ - 在不使用 if 的情况下插入/更新 std::unordered_map 元素的最快方法是什么?

我目前有很多如下代码: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;

c++ - 什么时候使用 std::multimap 有意义

我目前正在尝试使用STL数据结构。但是我仍然不确定何时使用哪个以及何时使用某种组合。目前我试图弄清楚,当使用std::multimap确实有意义。据我所知,通过结合std::map和std::vector可以轻松构建自己的多map实现。所以我留下了一个问题,什么时候应该使用这些数据结构中的每一个。简单性:std::multimap使用起来肯定更简单,因为不必处理额外的嵌套。但是,作为批量访问一系列元素可能需要将数据从迭代器复制到另一个数据结构(例如std::vector)。速度:vector的局部性很可能使在相等元素范围内的迭代速度更快,因为缓存的使用得到了优化。但是我猜std::mu