2017-12-27 10 views
1

내가 우선 순위 큐를 사용하는 알고리즘을 구현했다. 을 여기 내 코드이유는 우선 순위 큐를 사용하는 동안 '('토큰을하기 전에 템플릿 인수 누락 무엇입니까?

#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의 고원의 의미를 이해 할 수없는 오전

+2

명료하게하기 위해 거기에'typedef' 또는 두 개의 문자를 넣으십시오. – Bathsheba

+1

코드에 [bits/stdC++. h] (https://stackoverflow.com/q/31816095/1782465 포함)를 포함하면 안됩니다. – Angew

+0

답변을 수락하는 것으로 간주하십시오. 감사. – alhadhrami

답변

2

. 올바른 구문을 사용하고 있지 않습니다. 대신

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

1

변경이이에

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을 사용해보십시오.

관련 문제