C++ STL list 遍歷刪除出錯(cuò)解決方案
C++ STL list 遍歷刪除崩潰
錯(cuò)誤用法一
下面這種用法會(huì)在for的地方崩潰,分析 第一次for循環(huán)的時(shí)候 it=0,當(dāng)t.erase(it)執(zhí)行完成之后 it就變成了 -17891602
表明it不能再作為迭代器進(jìn)行運(yùn)算,自然會(huì)報(bào)錯(cuò)。
#include <map>
#include <list>
using namespace std;
typedef std::list<int > TESTLIST;
int _tmain(int argc, _TCHAR* argv[])
{
TESTLIST t;
for (int i = 0; i < 10;i++)
{
t.push_back(i);
}
for (TESTLIST::iterator it = t.begin(); it != t.end();)
{
t.erase(it);
it++;
}
return 0;
}
錯(cuò)誤用法二
下面這種用法出現(xiàn)的錯(cuò)誤與錯(cuò)誤一相同
#include <map>
#include <list>
using namespace std;
typedef std::list<int > TESTLIST;
int _tmain(int argc, _TCHAR* argv[])
{
TESTLIST t;
for (int i = 0; i < 10;i++)
{
t.push_back(i);
}
for (TESTLIST::iterator it = t.begin(); it != t.end();it++)
{
t.erase(it);
}
return 0;
}
錯(cuò)誤用法三
下面這種用法以為不it++就不會(huì)有事,其實(shí)他們的錯(cuò)誤都一樣,那就是t.erase(it)之后 it已經(jīng)是非迭代量,自然不能作為迭代操作
#include "stdafx.h"
#include <map>
#include <list>
using namespace std;
typedef std::list<int > TESTLIST;
int _tmain(int argc, _TCHAR* argv[])
{
TESTLIST t;
for (int i = 0; i < 10;i++)
{
t.push_back(i);
}
for (TESTLIST::iterator it = t.begin(); it != t.end();)
{
t.erase(it);
}
return 0;
}
正確用法
#include <map>
#include <list>
using namespace std;
typedef std::list<int > TESTLIST;
int _tmain(int argc, _TCHAR* argv[])
{
TESTLIST t;
for (int i = 0; i < 10;i++)
{
t.push_back(i);
}
for (TESTLIST::iterator it = t.begin(); it != t.end();)
{
t.erase(it++);
}
return 0;
}
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
- C++遍歷文件夾下所有文件的多種方法
- C++實(shí)現(xiàn)哈夫曼樹簡單創(chuàng)建與遍歷的方法
- C++實(shí)現(xiàn)圖的鄰接矩陣存儲(chǔ)和廣度、深度優(yōu)先遍歷實(shí)例分析
- c++二叉樹的幾種遍歷算法
- C++實(shí)現(xiàn)圖的鄰接表存儲(chǔ)和廣度優(yōu)先遍歷實(shí)例分析
- 淺談c++ vector和map的遍歷和刪除對象
- c++ builder TreeView控件節(jié)點(diǎn)遍歷代碼
- 二叉樹遍歷 非遞歸 C++實(shí)現(xiàn)代碼
- C++遍歷文件夾下文件的方法
- C++實(shí)現(xiàn)廣度優(yōu)先遍歷圖
相關(guān)文章
Win10+VS2017新CUDA項(xiàng)目配置教程
這篇文章主要為大家詳細(xì)介紹了Win10+VS2017新CUDA項(xiàng)目配置教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-09-09
C++實(shí)現(xiàn)LeetCode(88.混合插入有序數(shù)組)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(88.混合插入有序數(shù)組),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07
C++簡易通訊錄系統(tǒng)實(shí)現(xiàn)流程詳解
這篇文章主要為大家介紹了C語言簡易版通訊錄的具體實(shí)現(xiàn)流程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
C++ OpenCV模擬實(shí)現(xiàn)微信跳一跳
這篇文章主要介紹了使用C++和OpenCV模擬實(shí)現(xiàn)微信跳一跳功能,本文圖文并茂通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-12-12

