C++ 交换多重映射中的每对值<;int,int>;

C++ 交换多重映射中的每对值<;int,int>;,c++,map,stl,swap,multimap,C++,Map,Stl,Swap,Multimap,我有一个包含超过500万对的多重映射,我需要用值交换键 unordered_multimap<int, int> edge; unordered_多重映射边; 由于容器的大尺寸和涉及的过程,我不希望通过迭代映射的每个元素来创建具有交换对的新多重映射 如果有的话,最好的方法是什么?您不能在适当的位置执行此操作 根据其键的哈希值存储元素的映射。如果要对不同的键(前一个值)进行散列,则必须重新生成整个映射,或者考虑另一种存储元素的方法 (正如轨道上的亮度竞赛所建议的那样)例如,支持双向

我有一个包含超过500万对的多重映射,我需要用值交换键

unordered_multimap<int, int> edge;
unordered_多重映射边;
由于容器的大尺寸和涉及的过程,我不希望通过迭代映射的每个元素来创建具有交换对的新多重映射


如果有的话,最好的方法是什么?

您不能在适当的位置执行此操作

根据其键的哈希值存储元素的映射。如果要对不同的键(前一个值)进行散列,则必须重新生成整个映射,或者考虑另一种存储元素的方法


(正如轨道上的亮度竞赛所建议的那样)例如,支持双向无序多重贴图。

您不能在适当的位置执行此操作

根据其键的哈希值存储元素的映射。如果要对不同的键(前一个值)进行散列,则必须重新生成整个映射,或者考虑另一种存储元素的方法

(正如轨道上的亮度竞赛所建议的那样)例如,支持双向无序多重贴图。

正确的方法根本不是这样做,而是首先要有一个双向贴图,您可以在其上执行任意方向的查找

考虑查看。

正确的方法根本不是这样做,而是首先要有一个双向映射,您可以在该映射上执行任意方向的查找

考虑调查。

你为什么“需要”这样做?如果您偶尔需要在另一个方向上查找,bimap肯定更有意义?为什么您“需要”这样做?如果您偶尔需要在另一个方向进行查找,bimap肯定更有意义?