错误:为vector声明迭代器时模板实参1无效
error: template argument 1 is invalid while declaring an iterator for vector
以下代码
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()){
vector被正确地声明为int型的列表。但是当它的迭代器被声明时,它给出了关于模板参数的错误。我只是使用int而不是任何用户定义的类,然后也有我无法理解的错误。有人能解决这个问题吗?
声明的变量
list
string delimiter = "->",vertex,list;
正在遮蔽您想要使用的std::list
。
相关文章:
- 非类型引用形参/实参
- 成员函数指针的模板实参演绎
- 函数和函数作为模板函数的实参
- Const到非Const指针模板实参的转换
- 传递boost::函数,该函数接受一个模板实参作为默认为NULL的形参
- 当实参是初始化列表而形参是引用时,重载解析
- 函数模板中返回类型的模板实参演绎
- ostream_iterator的模板实参-每个元素都是pair
- c++——关于使用默认实参的困惑
- std::shared_ptr、继承和模板实参演绎的问题
- 将操作符转换为模板实参的特化
- 使用模板模板形参时,模板实参推导失败
- 带有const实参的c++构造函数
- 函数指针作为模板实参而不是函子
- c++临时对象绑定到实参并返回const引用值
- 调用对象作为默认实参的this
- 当涉及一个重载函数作为实参时,模板实参推导是如何工作的
- c++对const引用的实参依赖没有改变
- 为什么模板非类型形参指针和引用实参需要是全局的
- 将函数形参的实参解包到c++模板类