我使用Visual Studio 2008:循环访问向量迭代无限
我想通过迭代器遍历一个向量itrv但它进入某种原因死循环: 错误:
ERROR :表达:地图/套迭代器不递增的
代码:
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;
}
我甚至尝试使用下标打印矢量的元素,它打印得很好。 但随着迭代失败:
cout<<vec[0]<<endl;
cout<<vec[1]<<endl;
cout<<vec[2]<<endl;
cout<<vec[3]<<endl;
cout<<vec[4]<<endl;
cout<<vec[5]<<endl;
cout<<"with itrv \n";
itrv=vec.begin();
cout<<*itrv;itr++;
cout<<*itrv;itr++;
cout<<*itrv;itr++;
cout<<*itrv;itr++;
cout<<*itrv;itr++;
cout<<*itrv;itr++;
我想你想使用'++ itrv'而不是'++ itr'。 – Default
@Default:看我的循环,我preincrementing。 – anurag86
我试过的编译器对此并不警惕,但是静态分析器可能会这样。不幸的是,Coliru没有扫描构建。 – chris