能不能在for循环里初始化两个迭代器
[code=C/C++][/code]
for (list<int>::iterator it_list = ilist.begin(),
vector<int>::iterator it_vec = ivec.begin();
it_list != ilist.end() && it_vec != ivec.end(); ++it_list, ++it_vec)
{
cout << " why ";
}
ilist ivec 都是已经初始化正确的 list<int> vector<int>, 测试后for这里总是出错:
1 missing ',' before identifier 'it_vec'.
2 'vector<int,class std::allocator<int> >::iterator' is not a static member
[解决办法]
初始化两个迭代器用的是逗号表达式,这里面就不能两个类型名称了。
把it_list 和 it_vec 的定义放循环外面应该就可以了。
[解决办法]
这么写应该就OK了:
- C/C++ code
list<int>::iterator it_list; // 声明(定义)变量部分放到for的外面来vector<int>::iterator it_vec; // 声明(定义)变量部分放到for的外面来for (it_list = ilist.begin(), it_vec = ivec.begin(); it_list != ilist.end() && it_vec != ivec.end(); ++it_list, ++it_vec){ cout << " why ";}