Reputation: 1687
I am using visual studio 2008:
I am trying to iterate over a vector through iterator itrv but it goes into infinite loop for some reason: Error :
ERROR : Expression: map/set iterator not incrementable
Code:
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;
}
I even tried printing the elements of vector using subscript, it prints fine. But with iterator it fails:
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++;
Upvotes: 0
Views: 221
Reputation: 23058
for(itrv=vec.begin();itrv!=vec.end();++itr)
It should be
for(itrv=vec.begin();itrv!=vec.end();++itrv)
Otherwise, itrv
was not moved and itrv != vec.end()
was always true whenever vec
is not empty.
Upvotes: 4