草庐IT

unordered_multimap

全部标签

c++ - STL Multimap 删除/删除值

我有STLMultimap,我想从映射中删除具有特定值的条目,我不想删除整个键,因为该键可能映射到其他所需的值。请帮忙。 最佳答案 如果我理解正确,这些值可以出现在任何键下。如果是这种情况,您将不得不遍历您的multimap并删除特定值。typedefstd::multimapMultimap;Multimapdata;for(Multimap::iteratoriter=data.begin();iter!=data.end();){//youhavetodothisbecauseiteratorsareinvalidatedMu

c++ - STL Multimap 删除/删除值

我有STLMultimap,我想从映射中删除具有特定值的条目,我不想删除整个键,因为该键可能映射到其他所需的值。请帮忙。 最佳答案 如果我理解正确,这些值可以出现在任何键下。如果是这种情况,您将不得不遍历您的multimap并删除特定值。typedefstd::multimapMultimap;Multimapdata;for(Multimap::iteratoriter=data.begin();iter!=data.end();){//youhavetodothisbecauseiteratorsareinvalidatedMu

c++ - 为什么 unordered_map "find + insert"比 "insert + check for success"快?

我使用unordered_map作为稀疏3D数组(128x128x128)将值插入到网格中,前提是网格单元仍然空闲。到目前为止,我总是使用find()检查单元格是否空闲,如果是,那么我使用insert()或emplace()添加了一个元素。现在我发现我可以使用insert和emplace的返回值来检查元素是否已添加,或者map中是否已经存在具有相同键的元素。我认为这可以提高性能,因为我可以完全删除find的使用。事实证明,不是通过插入而不查找来提高性能,而是性能实际上下降了,我不知道为什么。我已将我的应用程序简化为这个示例,其中点是随机生成的,然后插入到网格中。#include#inc

c++ - 为什么 unordered_map "find + insert"比 "insert + check for success"快?

我使用unordered_map作为稀疏3D数组(128x128x128)将值插入到网格中,前提是网格单元仍然空闲。到目前为止,我总是使用find()检查单元格是否空闲,如果是,那么我使用insert()或emplace()添加了一个元素。现在我发现我可以使用insert和emplace的返回值来检查元素是否已添加,或者map中是否已经存在具有相同键的元素。我认为这可以提高性能,因为我可以完全删除find的使用。事实证明,不是通过插入而不查找来提高性能,而是性能实际上下降了,我不知道为什么。我已将我的应用程序简化为这个示例,其中点是随机生成的,然后插入到网格中。#include#inc

c++ - c++中map和unordered_map的性能差异

我有一个简单的要求,我需要一个类型的map。但是我需要理论上最快的检索时间。我使用了map和来自tr1的新提议的unordered_map我发现至少在解析文件和创建map时,通过一次插入一个元素。map只用了2分钟,而unordered_map用了5分钟。由于我将成为要在Hadoop集群上执行的代码的一部分,并且将包含约1亿个条目,因此我需要尽可能短的检索时间。还有另一个有用的信息:目前正在插入的数据(键)是从1,2,...到~1000万的整数范围。我还可以强制用户指定最大值并使用上述顺序,这会显着影响我的实现吗?(我听说map是基于rb树,按递增顺序插入会带来更好的性能(或最差?))

c++ - c++中map和unordered_map的性能差异

我有一个简单的要求,我需要一个类型的map。但是我需要理论上最快的检索时间。我使用了map和来自tr1的新提议的unordered_map我发现至少在解析文件和创建map时,通过一次插入一个元素。map只用了2分钟,而unordered_map用了5分钟。由于我将成为要在Hadoop集群上执行的代码的一部分,并且将包含约1亿个条目,因此我需要尽可能短的检索时间。还有另一个有用的信息:目前正在插入的数据(键)是从1,2,...到~1000万的整数范围。我还可以强制用户指定最大值并使用上述顺序,这会显着影响我的实现吗?(我听说map是基于rb树,按递增顺序插入会带来更好的性能(或最差?))

c++ - 如何获取 multimap 中的所有唯一键

我有一个多重映射,我希望将其中的所有唯一键存储在一个vector中。multimapmymm;multimap::iteratorit;charc;mymm.insert(pair('x',50));mymm.insert(pair('y',100));mymm.insert(pair('y',150));mymm.insert(pair('y',200));mymm.insert(pair('z',250));mymm.insert(pair('z',300));我该怎么做?有办法用一个键计算元素的数量,但没有办法计算多重映射中唯一键的数量。添加:唯一是指multimap中的所有键一

c++ - 如何获取 multimap 中的所有唯一键

我有一个多重映射,我希望将其中的所有唯一键存储在一个vector中。multimapmymm;multimap::iteratorit;charc;mymm.insert(pair('x',50));mymm.insert(pair('y',100));mymm.insert(pair('y',150));mymm.insert(pair('y',200));mymm.insert(pair('z',250));mymm.insert(pair('z',300));我该怎么做?有办法用一个键计算元素的数量,但没有办法计算多重映射中唯一键的数量。添加:唯一是指multimap中的所有键一

C++11:迭代时从 std::unordered_map 中删除单个元素是否安全?

考虑在迭代时从关联容器中删除元素的规范算法:for(autoiter=myMap.begin();iter!=myMap.end();){if(/*removalcondition*/){iter=myMap.erase(iter);}else{++iter;}}在使用C++11std::unordered_map容器时,我一直在应用这个算法,没有多加考虑。但是,在浏览cppreference.com上的std::unordered_map::erase文档后,看了下面的说明,我有点担心了:Theorderoftheelementsthatarenoterasedispreserved

C++11:迭代时从 std::unordered_map 中删除单个元素是否安全?

考虑在迭代时从关联容器中删除元素的规范算法:for(autoiter=myMap.begin();iter!=myMap.end();){if(/*removalcondition*/){iter=myMap.erase(iter);}else{++iter;}}在使用C++11std::unordered_map容器时,我一直在应用这个算法,没有多加考虑。但是,在浏览cppreference.com上的std::unordered_map::erase文档后,看了下面的说明,我有点担心了:Theorderoftheelementsthatarenoterasedispreserved