【问题标题】:Single std::map/multimap with multiple comparison functions?具有多个比较功能的单个 std::map/multimap?
【发布时间】:2012-10-05 23:28:48
【问题描述】:

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

ac 抗体 啊 公元前 巴 cb

但我可能想得到订单:

aa 抗体 交流 巴 公元前 cb

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

【问题讨论】:

  • 不幸的是,我没有使用 boost 的选项,但我会检查一下。

标签: c++ maps


【解决方案1】:

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

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

【讨论】:

  • 谢谢。这就是我在问这个问题之前想做的事情。
  • @zoltar:如果您的密钥在数据中,则改用::std::set 可能更有意义。
猜你喜欢
  • 1970-01-01
  • 2015-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-05
  • 1970-01-01
相关资源
最近更新 更多