C++ STL list erase()用法。

    1. #include <iostream>
    2. #include <iterator>
    3. #include <list>
    4. using namespace std;

    5. int main(int argc, char **argv)
    6. {
    7.         list<int> nlist;
    8.         list<int>::iterator it;

    9.         for (int i = 0; i < 10; ++i)
    10.                 nlist.push_back(i);

    11.         for (it = nlist.begin(); it != nlist.end();) {
    12.                 if (*it % 2 == 0)
    13.                         it = nlist.erase(it);
    14.                 else
    15.                         ++it;
    16.         }   

    17.         copy(nlist.begin(), nlist.end(), ostream_iterator<int>(cout, "\n"));

    18.         return 0;
    19. }
    20. // 上面是前增高效率用法,因为后增会创建临时变量。
    21. // 网上有这样两种用法
    22. 一:

      for(;test_list_it != test_list.end();)

        {
        test_list.erase(test_list_it++);
        }

      or

      二 : 

    23. for(;test_list_it != test_list.end();)

        {
      std::list<int>::iterator iter_e=test_list_it++;
        test_list.erase(iter_e);
        }

    24. 可以看出其实,这二者都是删除临时迭代器指向的元素,而当前的迭代器已经指定到下一个元素。

    25. 其实   it = nlist.erase(it);  本身就返回一个list删除后,迭代器指向的元素。

    26.  

    27. 所以,就用返回值赋予当前迭代器 指针,该指针继续遍历list。

       

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STL(Standard Template Library)是C++标准库中的一个重要组成部分,提供了一系列的模板类和函数,用于实现常用的数据结构和算法。其中包括vector、list等容器类。 引用\[1\]中的代码展示了如何使用list容器,包括插入元素、删除元素、判断容器是否为空、获取容器大小等操作。通过list容器的push_back、push_front、pop_back等成员函数可以实现元素的插入和删除。同时,可以使用迭代器进行遍历和访问容器中的元素。 引用\[2\]中的代码展示了如何遍历和打印一个string类型的vector容器中的元素。通过迭代器的方式,可以依次访问vector容器中的每个元素,并进行相应的操作。 引用\[3\]中的代码展示了如何遍历和打印一个int类型的list容器中的元素。同样地,通过迭代器的方式,可以依次访问list容器中的每个元素,并进行相应的操作。 综上所述,C++ STL提供了丰富的容器类和算法,可以方便地进行数据结构和算法的实现。在实际编程中,可以根据需求选择合适的容器类,并使用相应的成员函数和迭代器进行操作和遍历。 #### 引用[.reference_title] - *1* [⭐️STL⭐️之list,set,map全解,❤️算法必备❤️下>](https://blog.csdn.net/weixin_45920495/article/details/120256992)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v12^insert_chatgpt"}} ] [.reference_item] - *2* *3* [【C++】500行代码全解STL_string_vector_remove和erase实现逻辑_deque_queue_list_pair_set_multiset_map_...](https://blog.csdn.net/qq_31295885/article/details/104788427)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v12^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值