繁体   English   中英

不能在使用 std::less 的地方使用 std::greater

[英]Can't use std::greater where std::less is used

这段代码编译得很好:

#include <queue>
#include <functional>
std::priority_queue<int> q (std::less<int>{});

而这段代码给出了奇怪的编译错误

#include <queue>
#include <functional>
std::priority_queue<int> q (std::greater<int>{});

std::priority_queue的第三个模板参数默认为std::less 因此,您正在调用的构造函数需要一个std::less object。 您必须更改第三个模板参数:

std::priority_queue<int, std::vector<T>, std::greater<int>> q (std::greater<int>{});

也不需要传入std::greater<int>{} ,因为有一个默认构造函数可以为您处理。

std::priority_queue<int, std::vector<T>, std::greater<int>> q;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM