重载"<"要存储的<map>类的运算符

  • 本文关键字:运算符 重载 存储 map c++ stl
  • 更新时间 :
  • 英文 :


我所知,map将数据保持在内部排序,并为此目的使用"<"运算符。如果我不重载该类的"<"运算符,会发生什么情况?

还有一个问题。我应该在类内部还是在类外编写重载函数?

提前谢谢。

据我所知,map 将数据保持在内部排序,并为此目的使用"<"运算符。

有点,但不是直接的。 std::map<Key, T, Compare, Allocator>为此目的使用CompareCompare默认为 std::less<Key> ,而 通常默认使用 < 运算符。但是,即使在标准库实现中,也存在std::less<Key>行为与<不同的情况。

如果我不重载该类的"<"运算符,会发生什么情况?

这要看情况。您可以指定不同的类作为Compare模板参数,以避免使用 std::less 。您可以添加std::less的专业化,以避免使用 < 。但是,如果不这样做,通常会收到有关未定义<的错误消息。

最新更新