小编Man*_*har的帖子

std :: greater <int>()和std :: greater <int>之间的区别?

此代码有效:

#include <iostream>
#include <queue>
#include <vector>
#include <functional>
using namespace std;
int main(){
    priority_queue<int,vector<int>,greater<int> > pq;
    pq.push(1);
    cout<<pq.top()<<endl;
}
Run Code Online (Sandbox Code Playgroud)

但是,此代码无法编译:

#include <iostream>
#include <queue>
#include <vector>
#include <functional>
using namespace std;
int main(){
    priority_queue<int,vector<int>,greater<int>() > pq;
    pq.push(1);
    cout<<pq.top()<<endl;
}
Run Code Online (Sandbox Code Playgroud)

为什么?
我所了解的是,它greater<int>() 是一个函数对象,并且priority_queue接受二进制谓词作为第三个参数,并且谓词是一种特殊的函子类型。但是这对大括号如何使这一点有所不同。

c++ templates predicate functor c++11

7
推荐指数
1
解决办法
7370
查看次数

标签 统计

c++ ×1

c++11 ×1

functor ×1

predicate ×1

templates ×1