std::greater 位于 double 和 class 的 std::pair 上

som*_*azy 0 c++ std priority-queue min-heap std-pair

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
Run Code Online (Sandbox Code Playgroud)

但我收到一条错误消息

与“运算符<”不匹配

它暗示了 的第二个元素std::pair,它是类类型。

应用于std::greater第一个和第二个元素std::pair

Nat*_*ica 6

std::greater只是调用operator <模板类型的包装器。因为我们可以在这里std::pair查看参考网站,我们看到它说

按字典顺序比较 lhs 和 rhs operator<,即比较第一个元素,只有当它们相等时才比较第二个元素。

因此,它使用这operator <两种类型,这意味着您的类类型需要提供它。因为它不会导致编译器错误。