anurag86
anurag86

Reputation: 1687

iterating over vector iterates infinitely

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

Answers (1)

timrau
timrau

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

Related Questions