2016-08-16 11 views
-1

次のコードエラー:テンプレート引数1は、ベクトル

ifstream read("input-1.txt"); 
int n,u;read >> n; 
vector<list<int>> adj_list (n+1); 
string delimiter = "->",vertex,list; 
size_t pos = 0;int count; 
string::size_type sz; 
for (int i=0;i<n;i++){ 
    read >> list; 
    count = 0; 
    while((pos = list.find(delimiter))!= string::npos){ 
     vertex = list.substr(0,pos); 
     if (count!=0){ 
      adj_list[i].push_back(stoi (vertex.substr(1,vertex.length()),&sz)); 
     } 
     list.erase(0,pos+delimiter.length()); 
     count++; 
    } 
} 
read >> vertex; 
u = stoi (vertex.substr(1,vertex.length()),&sz); 



vector<list<int>>::iterator it1 = adj_list.begin(); 
while(it1!=adj_list.end()){ 
    list<int> new_list = *it1; 
    list<int>::iterator it2 = new_list.begin(); 
    while(it2!=new_list.end()){ 
     cout << *it2 <<" "; 
     it2++; 
    } 
    cout << endl; 
    it1++; 
} 
cout << u << n << "u" << "n"; 

のためのイテレータを宣言しながら、無効である

even.cpp:37:26: error: template argument 1 is invalid 
    vector<typename list<int>>::iterator it1 = adj_list.begin(); 
         ^
even.cpp:37:26: error: template argument 2 is invalid 
even.cpp:37:39: error: qualified-id in declaration before ‘it1’ 
    vector<typename list<int>>::iterator it1 = adj_list.begin(); 
            ^
even.cpp:38:8: error: ‘it1’ was not declared in this scope 
    while(it1!=adj_list.end()){ 
     ^
even.cpp:39:8: error: expected primary-expression before ‘int’ 
    list<int> new_list = *it1; 
     ^
even.cpp:40:8: error: expected primary-expression before ‘int’ 
    list<int>::iterator it2 = new_list.begin(); 
     ^
even.cpp:41:9: error: ‘it2’ was not declared in this scope 
    while(it2!=new_list.end()){ 
     ^
even.cpp:41:14: error: ‘new_list’ was not declared in this scope 
    while(it2!=new_list.end()){ 

は、ベクターがint型のリストであると正しく宣言されている次のエラーになります。しかし、イテレータが宣言されると、テンプレート引数についてのエラーが返されます。 私はちょうどintのユーザー定義クラスではなく、私は理解できないエラーを使用しています。誰もこれを整理することはできますか?

+0

エラーがコードと一致しません。そこに余分な 'typename'があります。 – chris

答えて

1

string delimiter = "->",vertex,list; 

で宣言された変数listは、あなたが使用したいstd::listを、シャドウイングされます。変数には別の名前を使用します。

関連する問題