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

发布于 2024-12-11 21:22:45 字数 93 浏览 0 评论 0原文

我正在寻找 C++ 中的一个函数来交换地图的内容...... 那是: 那些曾经是钥匙的现在变成了物品,那些曾经是物品的现在变成了钥匙。 你能告诉我是否有这方面的事情吗?

I'm looking for a function in C++ that for swap the contents of a map ...
that is:
those that were the keys now become the items and those that the items were now the keys.
Can you tell me if there is something about this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

丶情人眼里出诗心の 2024-12-18 21:22:45

正如 Geoffroy 所说,std::map 不允许这种行为。但是,您可能想要使用类似 STL 的容器 Boost.Bimap - 双向地图。

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

As Geoffroy said, std::map doesn't allow this behaviour. However, you might want to use a STL-like container Boost.Bimap - bidirectorial map.

A Bimap is a data structure that represents bidirectional relations between elements of two collections. The container is designed to work as two opposed STL maps. A bimap between a collection X and a collection Y can be viewed as a map from X to Y (this view will be called the left map view) or as a map from Y to X (known as the right map view).

情深已缘浅 2024-12-18 21:22:45

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

这并不是什么很难做的事情,但首先要考虑以不同的方式来做。

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

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

There's no standard method / way to do this, you have to write your own function.

It's not something very hard to do, but first think about doing it in a different way.

If you have to invert your key/values, then you're code may be ill-though, you don't keep the logic of the container.

If you want more information, explain why you want to do this.

顾忌 2024-12-18 21:22:45

将映射中的项目插入多重映射 - 首先是值,其次是键,并使用适当的比较函数来比较原始映射的两个值。插入所有值键项后,多重映射将按预期排序。工作完成了!

Insert the items in the map into a multimap - value first, key second, with appropriate comparison function that compares two values of the original map. Once all value-key items are inserted, the multimap will be sorted as intended. Job done!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文