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