遍历std::list过程中删除元素后继续遍历过程
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了遍历std::list过程中删除元素后继续遍历过程相关的知识,希望对你有一定的参考价值。
std::list::erase
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过程中删除元素后继续遍历过程的主要内容,如果未能解决你的问题,请参考以下文章