是否 std::greater
当你有 std::pair
的 int
和一个类?
我试图创建一个优先级队列,按第一个元素排序。
std::priority_queue<std::pair<double, classA>, std::vector<std::pair<double, classA>>, std::greater<std::pair<double, classA>>> priorityQueue
但我得到一个错误信息说
不符合'operator<'`。
而且它暗示了第二个元素的 std::pair
,它是类型的。
是 std::greater
的第一和第二元素。std::pair
?
std::greater
只是一个包装器,用于调用 operator <
的模板类型。 对于 std::pair
我们可以查看参考网站 此处 我们看到它说
比较lhs和rhs在词法上的不同。
operator<
即对第一个元素进行比较,只有当它们相等时,才对第二个元素进行比较。
所以,它使用的是 operator <
的两个类型,这意味着你的类类型需要提供它。 因为它没有提供,所以你会得到编译器错误。
你的 classA
类型需要定义一个 operator<
.注意 std::pair
从词法上比较。