这可能吗?它甚至有意义吗?例如,如果我有一个 map 比较函数,我需要 (pos 1) 作为键(按顺序):
交流 ab 一个 公元前 吧
但我可能想要获得订单:
啊啊 ab 交流电 吧 公元前
我知道我可以降低/升高并从那里进行比较。另外,如果我有后者的比较功能怎么样。是否也可以通过不同的比较函数和相同的 map 来完成先验?
最佳答案
::std::map
是一种复杂的数据结构,它以特定顺序保存元素。重新排序这个数据结构意味着完全破坏它并从头开始重新创建它。所以不,这不能完全按照您指定的方式完成。
但这是可以做到的。它需要多个映射,并且为非平凡数据有效地使用空间需要您存储指向数据的指针而不是数据本身。在这种情况下如何处理 key 取决于 key 是什么。在某些情况下,您可能还想存储指向键的指针,或者可能只是再次使用数据指针并让比较函数从数据中提取键。
关于c++ - 具有多个比较功能的单个 std::map/multimap?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12755304/