深入理解STL list erase

server/2024/12/22 22:28:32/

1、list erase后,当前的迭代器失效,返回指向下一个节点的迭代器

#include<list>
#include<iostream>
#include<vector>
using namespace std;int main()
{list<int> ls;ls.push_back(1);ls.push_back(2);ls.push_back(3);list<int>::iterator it = ls.begin();for ( it = ls.begin(); it != ls.end();){if (*it == 2){ls.erase(it);}else{cout << *it << endl;it++;}}return 0;
}

ls.erase(it);后,it失效,再对其进行++将会导致软件崩溃,erase后返回一个新的有效的迭代器 it = ls.erase(it);才是正确的

list erase源码如下

    iterator erase(const const_iterator _Where) noexcept /* strengthened */ {
#if _ITERATOR_DEBUG_LEVEL == 2_STL_VERIFY(_Where._Getcont() == _STD addressof(_Mypair._Myval2), "list erase iterator outside range");
#endif // _ITERATOR_DEBUG_LEVEL == 2const auto _Result = _Where._Ptr->_Next;//销毁当前节点_Node::_Freenode(_Getal(), _Mypair._Myval2._Unlinknode(_Where._Ptr));//返回一个新的迭代器return _Make_iter(_Result);}_Nodeptr _Unlinknode(_Nodeptr _Pnode) noexcept { // unlink node at _Where from the list_Orphan_ptr2(_Pnode);_Pnode->_Prev->_Next = _Pnode->_Next;_Pnode->_Next->_Prev = _Pnode->_Prev;--_Mysize;return _Pnode;}

http://www.ppmy.cn/server/152336.html

相关文章

STM32-笔记4-按键点亮led

1、复制03项目流水灯&#xff0c;重命名改成05项目&#xff0c;05-按键控制翻转灯的状态 在BSP文件夹里新建key文件夹&#xff0c;在该文件夹里面&#xff0c;新建两个key.c和key.h文件 2、打开工程文件-加载文件 在品和魔术棒里面把刚才新建的key文件夹里面的.c 和.h文件加载…

软件维护的实施

软件维护活动 (1) 维护机构 除了较大的软件开发公司外&#xff0c;通常在软件维护工作方面&#xff0c;不保持正式的维护机构。维护往往是在没有计划的情况下进行的。虽然不要求建立一个正式的维护机构&#xff0c;但是在开发部门&#xff0c;确立一个非正式的维护机构则是非常…

【Http,Netty,Socket,WebSocket的应用场景和区别】

Http&#xff0c;Netty&#xff0c;Socket&#xff0c;WebSocket的应用场景和区别 Http、Netty、Socket、WebSocket都是网络通信领域中的重要技术和工具&#xff0c;它们在应用场景和特性上有所区别。以下是对这四种技术和工具的应用场景及区别的详细分析&#xff1a; Http的…

docker如何学习与使用入门

学习和使用 Docker 的入门可以分为以下几个步骤。Docker 是一个功能强大的工具&#xff0c;通过容器化技术使得应用开发和部署更加高效、简便。以下是一个逐步的学习路径&#xff0c;帮助你从入门到熟练掌握 Docker。 1. 理解容器化的概念 在学习 Docker 之前&#xff0c;先了…

深度解析京东API接口:如何高效获取商品详情与SKU信息

在当下电商蓬勃发展的时代&#xff0c;如何高效地获取商品详情与SKU&#xff08;Stock Keeping Unit&#xff0c;库存单位&#xff09;信息成为了商家们进行电商运营、价格比较、库存管理及市场分析等活动的关键。京东API接口为此提供了强大的支持&#xff0c;使得开发者能够通…

ios 混合开发应用白屏问题

一、问题场景 项目业务中某个前端页面中使用了多个echart 组件来显示历史数据&#xff0c; 在反复切换到这个页面后&#xff0c;会出现白屏问题。 二、问题分析 0x116000ab0 - GPUProcessProxy::didClose: 0x116000ab0 - GPUProcessProxy::gpuProcessExited: reasonCrash 0x11…

XXE靶场

XXE-lab 靶场 靶场网址&#xff1a;http://172.16.0.87/ 第一步我们看到网站有登录框我们试着用 bp 去抓一下包 将抓到的包发到重放器中 然后我们构建palody <!DOCTYPE foo [ <!ENTITY xxe SYSTEM "php://filter/readconvert.base64-encode/resourceC:/flag/fla…

WordPress 去除?v= 动态后缀

Wordpress url后面带有?vxxx的参数符&#xff0c;这种现象出现在安装了Woocommerce插件的店铺类型站点上&#xff0c;参数的作用是帮助系统根据用户的geographic定位计算 tax and shipping fee。 如何删除&#xff1f; 后台进入WooCommerce Settings &#xff0c;将根据IP定…