迭代迭代迭代无限迭代

时间:2015-09-22 16:03:24

标签: c++ vector stl

我正在使用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;
        }

1 个答案:

答案 0 :(得分:4)

for(itrv=vec.begin();itrv!=vec.end();++itr)

应该是

for(itrv=vec.begin();itrv!=vec.end();++itrv)

否则,itrv未被移动,只要itrv != vec.end()不为空,vec始终为真。