在C+中交换映射的键和值+; 我正在寻找一个C++函数,用来交换一个地图的内容… 即: 那些曾经是关键的现在变成了项目,那些曾经是项目的现在变成了关键。 你能告诉我这里面有什么吗?

在C+中交换映射的键和值+; 我正在寻找一个C++函数,用来交换一个地图的内容… 即: 那些曾经是关键的现在变成了项目,那些曾经是项目的现在变成了关键。 你能告诉我这里面有什么吗?,c++,C++,没有标准的方法/方法,你必须编写自己的函数 这不是一件很难做到的事情,但首先要考虑用另一种方式去做 如果您必须反转您的键/值,那么您的代码可能有问题,尽管您没有保留容器的逻辑 如果您想了解更多信息,请解释为什么要这样做。正如Geoffroy所说,std::map不允许这种行为。但是,您可能希望使用类似STL的容器双目录映射 Bimap是一种数据结构,表示两个集合的元素之间的双向关系。容器被设计成两个相对的STL映射。集合X和集合Y之间的bimap可以被视为从X到Y的映射(此视图称为左映射视图)或

没有标准的方法/方法,你必须编写自己的函数

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

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


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

正如Geoffroy所说,
std::map
不允许这种行为。但是,您可能希望使用类似STL的容器双目录映射

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


首先将映射中的项目插入一个多映射值,然后按第二键,并使用适当的比较函数比较原始映射的两个值。插入所有值键项后,多重映射将按预期进行排序。工作完成了

您可能希望对多重映射执行此操作,因为映射中的值不一定是不同的​​我的地图的所有部分都是独一无二的:没有重复的。我认为boost有一个迭代器适配器,它可能使这变得很容易。也许,目前我对boost不太了解。但这并不难,我必须读取一个包含行id字符串的文件。对于我的算法,我需要这个值是一个整数(出于效率而不是字符串的原因),使用映射将这些字符串与唯一id关联。在地图上,所以我输入了字符串。我需要用我的旧格式id字符串显示我的算法的结果,所以对于每个IDIT搜索字符串,我有所有相应的值​​在地图上。要加快速度,可以进行交换