+ -
当前位置:首页 → 问答吧 → list 的问题,求.........

list 的问题,求.........

时间:2011-12-02

来源:互联网

C/C++ code
    list<int> lst;
    lst.push_back(1);

    for (list<int>::iterator it = lst.begin();it!=lst.end();++it)
    {
        list<int>::iterator itemp = it;

        --it;

        lst.erase(itemp);

    }

作者: hlyces   发布时间: 2011-12-02

作为迭代器变量的it是不能为负值的,如果初始=lst.begin(),--it,就会变成负值,故出错

作者: nuaazdh   发布时间: 2011-12-02

删除元素的定式写法:
C/C++ code

    for (list<int>::iterator it = lst.begin();it!=lst.end();/*++it*/)
    {
         if(删除元素的条件满足)
         {
               it = lst.erase(it);
         }
         else
         {
               ++it;
         }
    }

作者: pathuang68   发布时间: 2011-12-02

楼主想表达什么啊?++it
——it

感觉好乱啊!

作者: wallwind   发布时间: 2011-12-02

C/C++ code

#include <list>
#include <iostream>
using namespace std;
int main()
{
    list<int> lst;
    lst.push_back(1);
    lst.push_back(1);
    lst.push_back(1);
    lst.push_back(1);
    lst.push_back(1);
    list<int>::iterator it1 = lst.begin(),
        it2 = lst.end();
    for (;it1 != it2;)
    {
        list<int>::iterator temp = it1;
        it1++;
        lst.erase(temp);
    }
    cout << lst.size() << endl;
    return 0;
}

list内部是链表的机制,如果开始指向头结点,你--操作之后他就不知道指向哪里了,然后你删掉再++他就不是指向第二个元素

作者: qscool1987   发布时间: 2011-12-02

难道你用的是传说中的vc6.0?
怎么会不报错呢?

作者: mingliang1212   发布时间: 2011-12-02