c++ - 具有多个比较功能的单个 std::map/multimap?

标签 c++ maps

这可能吗?它甚至有意义吗?例如,如果我有一个 map 比较函数,我需要 (pos 1) 作为键(按顺序):

交流 ab 一个 公元前 吧

但我可能想要获得订单:

啊啊 ab 交流电 吧 公元前

我知道我可以降低/升高并从那里进行比较。另外,如果我有后者的比较功能怎么样。是否也可以通过不同的比较函数和相同的 map 来完成先验?

最佳答案

::std::map 是一种复杂的数据结构,它以特定顺序保存元素。重新排序这个数据结构意味着完全破坏它并从头开始重新创建它。所以不,这不能完全按照您指定的方式完成。

但这是可以做到的。它需要多个映射,并且为非平凡数据有效地使用空间需要您存储指向数据的指针而不是数据本身。在这种情况下如何处理 key 取决于 key 是什么。在某些情况下,您可能还想存储指向键的指针,或者可能只是再次使用数据指针并让比较函数从数据中提取键。

关于c++ - 具有多个比较功能的单个 std::map/multimap?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12755304/

相关文章:

javascript - 将自定义标记文本添加到 Google map

maps - PHP 将 Exif GPS 数据转换为 Google 友好值

c++ - 使用 Code::Blocks 对类方法的 undefined reference

c++ - 我可以在宏中编写模板类吗?

c++ - LLDB 在 C++ 类虚方法中不显示变量值

android - 在 map 中定位我的位置的问题

c++ - 使用 union 来代替强制转换是否定义明确?

c++ - Python OpenCv 构建未在命令行中检测到 visual studio 2019

python - 根据邮政编码在真实 map 上显示数据

javascript - 使用 d3.js 和 topoJSON 创建非洲 map