为什么会出现在使用优先级队列失踪前模板参数“(”令牌?

我用的是优先级队列实现算法。 这里是我的代码为什么会出现在使用优先级队列失踪前模板参数“(”令牌?

#include <iostream> 

#include<bits/stdc++.h>

using namespace std;

int first[2]={2,-2};

int second[2]={1,-1};

vector<pair<pair<int,int>,int>>vec;

class compare{

public:

bool operator()(pair<pair<int,int>,int>a,pair<pair<int,int>,int>b)

{

return a.second>b.second;

}

};

int main() {

long long int a,b,c,d;

while(cin>>a>>b>>c>>d)

{

priority_queue(pair<pair<int,int>,int>,vector<pair<pair<int,int>,int>>,compare) q;

map<pair<int,int>,bool>visited;

map<pair<int,int>,int>dist;

map<pair<int,int>,pair<int,int>> parent;

for(int i=1;i<=9;i++)

for(int j=1;j<=9;j++)

{

dist[make_pair(i,j)]=INT_MAX;

visited[make_pair(i,j)]=false;

}

dist[make_pair(a,b)] = 0;

visited[make_pair(a,b)] = true;

q.push(make_pair(make_pair(a,b),0));

while(!q.empty())

{

pair<int,int> node = q.top().first;

int distance = q.top().second;

q.pop();

//followed by relaxation step

}

}

// your code goes here

return 0;

}

问题是我收到以下错误:

rog.cpp: In function ‘int main()’: 

prog.cpp:39:17: error: missing template arguments before ‘(’ token

priority_queue(pair<pair<int,int>,int>,vector<pair<pair<int,int>,int>>,compare) q;

^

prog.cpp:39:41: error: expected primary-expression before ‘,’ token

priority_queue(pair<pair<int,int>,int>,vector<pair<pair<int,int>,int>>,compare) q;

^

prog.cpp:39:73: error: expected primary-expression before ‘,’ token

priority_queue(pair<pair<int,int>,int>,vector<pair<pair<int,int>,int>>,compare) q;

^

prog.cpp:39:73: error: expected primary-expression before ‘)’ token

priority_queue(pair<pair<int,int>,int>,vector<pair<pair<int,int>,int>>,compare) q;

我无法理解究竟是什么error.It沃尔德的意义是很大的帮助,如果有人能澄清这对我

回答:

。你没有使用正确的语法。而不是写

priority_queue(pair<pair<int,int>,int>,vector<pair<pair<int,int>,int>>,compare) q; 

的你应该写

priority_queue<pair<pair<int,int>,int>,vector<pair<pair<int,int>,int>>,compare> q; 

欲了解更多信息,请参考以下链接:http://en.cppreference.com/w/cpp/container/priority_queue

回答:

更改此:

priority_queue(pair<pair<int,int>,int>,vector<pair<pair<int,int>,int>>,compare) q; 

这样:

priority_queue<pair<pair<int,int>,int>,vector<pair<pair<int,int>,int>>,compare> q; 

你会得到这个代码编译。

但是,这段代码是不可读的。考虑使用typedef

以上是 为什么会出现在使用优先级队列失踪前模板参数“(”令牌? 的全部内容, 来源链接: utcz.com/qa/264931.html

回到顶部