我使用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