none
VC++下,vector容器内删除元素 RRS feed

  • 问题

  • 程序如下(省略头文件):

    class temp

    {

    int a,b,c;

    };

    vector<temp> A;

    int main()

    {

    temp x;

    for(int i=0;i!=10;i++)

    {

    x.a=i;x.b=i+1;x.c=i+2;

    A.push_back(x);

    }

    for(vector<temp>::iterator iter=A.begin();iter!=A.end();iter++)

    {

    if ((*iter).a==2)

    A.erase(iter);

    }

    return 0;

    }

    问题:为什么运行时报错?

    2013年9月16日 12:32

答案

  • 因为你调整了 vector 大小,iter 被重置了。

    记住,再对 vector 进行插入、删除操作后,你需要重新获取 iterator 。

    2013年9月17日 1:43

全部回复