码迷,mamicode.com
首页 > 其他好文 > 详细

遍历std::list过程中删除元素后继续遍历过程

时间:2016-02-18 01:24:24      阅读:334      评论:0      收藏:0      [点我收藏+]

标签:

std::list::erase

Erase elements

Removes from the list container either a single element (position) or a range of elements ([first,last)).
This effectively reduces the container size by the number of elements removed, which are destroyed.
Unlike other standard sequence containers, list and forward_list objects are specifically designed to be efficient inserting and removing elements in any position, even in the middle of the sequence.

返回值

An iterator pointing to the element that followed the last element erased by the function call. This is the container end if the operation erased the last element in the sequence.

    int iArray[10] = { 2, 3, 6, 4, 1, 17, 4, 9, 25, 4 };
    list<int> iList(iArray, iArray + 10);
    vector<int> iVec;
    for(list<int>::iterator it = iList.begin();
                it != iList.end(); it++) {
        iVec.push_back(*it);
        if(*it == 4) {
            it = iList.erase(it);
            it--;
        }
    }
    cout << "iVec: ";
    for(auto& i : iVec) {
        cout << i << " ";
    }
    cout << endl;
    cout << "iList: ";
    for(auto& i : iList) {
        cout << i << " ";
    }
    cout << endl;

Output:
iVec: 2 3 6 4 1 17 4 9 25 4
iList: 2 3 6 1 17 9 25

或者:

    for(list<int>::iterator it = iList.begin();
                it != iList.end();) {
        iVec.push_back(*it);
        if(*it == 4) {
            it = iList.erase(it);
        } else {
            it++;
        }
    }

 

遍历std::list过程中删除元素后继续遍历过程

标签:

原文地址:http://www.cnblogs.com/h3xi4oy1/p/5196964.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!