在c++中交换映射的键和值

Swapping keys and values of a map in C++

本文关键字:键和值 映射 交换 c++      更新时间:2023-10-16

我正在寻找c++中的一个函数,用于交换映射的内容…那就是:那些曾经是钥匙的现在变成了物品,那些曾经是物品的现在变成了钥匙。你能告诉我这是怎么回事吗?

如Geoffroy所说,std::map不允许这种行为。但是,您可能希望使用类似stl的容器Boost。Bimap -双向映射。

Bimap是一种数据结构,表示两个集合的元素之间的双向关系。容器被设计为作为两个相对的STL映射工作。集合X和集合Y之间的地图可以看作是从X到Y的地图(这个视图称为左地图视图)或从Y到X的地图(称为右地图视图)。

没有标准的方法/方式来做到这一点,你必须自己编写函数。

这不是一件很难做的事,但首先要考虑用另一种方式来做。

如果你必须反转你的键/值,那么你的代码可能有问题——尽管你没有保持容器的逻辑。

如果你想了解更多信息,请解释你为什么要这样做。

将映射中的项插入到multimap中-首先是值,其次是键,并使用适当的比较函数比较原始映射的两个值。一旦所有的值键项都被插入,multimap将按预期排序。完成工作!