具有多种比较功能的单标::地图/多地图

Single std::map/multimap with multiple comparison functions?

本文关键字:地图 单标 功能 比较      更新时间:2023-10-16

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

交流血型机 管 局公元前八CB

但随后我可能想获得订单:

机 管 局血型交流八公元前CB

我知道我可以得到更低/更高并从那里进行比较。 另外,如果我有后者的比较功能怎么样。 可以通过不同的比较功能和相同的地图来完成先验吗?

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

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