我正在使用visual studio 2008:
我试图通过迭代器itrv迭代一个向量,但由于某种原因它进入无限循环: 错误:
错误:表达式:map / set迭代器不可递增
代码:
var b = new File("c:\test.txt");
b.open('r');
var str = "";
while(!b.eof) {
str += b.readln();
}
b.close();
alert(str);
我甚至尝试使用下标打印矢量元素,打印效果很好。 但是使用迭代器它会失败:
int main(
{
set<int> s1;
set<int>::iterator itr;
s1.insert(43);
s1.insert(42);
s1.insert(41);
s1.insert(3);
s1.insert(2);
s1.insert(1);
vector<int> vec;
vector<int>::iterator itrv=vec.begin();
for(itr=s1.begin();itr!=s1.end();++itr)
{
cout<<*itr;
vec.push_back(*itr);
cout<<endl;
}
cout<<"so the size of vector is SIZE : "<<vec.size()<<endl; //i get 6 here
//PROBLEM IN THIS LOOP. GOES TO INFINITE LOOP AND PRINTS JUST '1' INFINITELY
for(itrv=vec.begin();itrv!=vec.end();++itr)
{
cout<<*itrv<<endl;
}
答案 0 :(得分:4)
for(itrv=vec.begin();itrv!=vec.end();++itr)
应该是
for(itrv=vec.begin();itrv!=vec.end();++itrv)
否则,itrv
未被移动,只要itrv != vec.end()
不为空,vec
始终为真。