【问题标题】:how to use std::pair as the key std::map如何使用 std::pair 作为键 std::map
【发布时间】:2012-01-31 07:36:29
【问题描述】:

我想定义一个std::map,其键为std::pair<std::string, std::string>,类似于follow

typedef std::map< std::pair<std::string, std::string>, std::string> my_map

这是否允许,我如何为这样的地图写comparasion operator

【问题讨论】:

  • 当你...尝试时会发生什么?
  • 为什么不允许?您将如何为std::map<KType, VType> 编写比较运算符?
  • 你的C++平台文档std::pair如何?答案就在那里。

标签: c++ stl


【解决方案1】:

是的,这是允许的。

std::pair 已经有一个 operator< 按顺序比较两个值,因此您可能根本不需要为比较器做任何特殊的事情。

【讨论】:

  • 呸,你打败了我……现在删除我的次优答案!
  • 值得一提的是,它只是为字典比较而定义的。因此,对于一对ints,您必须自己定义它。
  • @visitor: 没有找到官方的,但是stackoverflow.com/questions/2819245/…
  • @ezdazuzena 为什么这意味着您需要为整数对定义自己的比较?在大多数情况下,这不是您希望整数对的行为吗?
  • @ezdazuzena 它没有按字典顺序比较各个项目(你怎么能通用地实现它?)。这里按字典顺序的意思是它比较第一个元素,如果第一个元素与第二个元素相等。为了比较单个元素,它使用元素的operator<
猜你喜欢
  • 1970-01-01
  • 2015-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-04
  • 2014-08-06
  • 1970-01-01
  • 2011-06-23
相关资源
最近更新 更多