直接删除元素后,原来的迭代器会失效。因此,我们不能在删除后立即使用++it。一个常见的做法是使用erase方法返回的新迭代器来继续遍历: cpp for (std::vector<int>::iterator it = vec.begin(); it != vec.end(); ) { if (*it % 2 == 0) { it = vec.erase(it); // erase返回删除元素...
栏目: 编程语言 要在使用迭代器遍历vector并删除元素,可以使用以下方法: 使用迭代器遍历vector,并在循环中判断条件后调用erase()方法删除元素。 #include <iostream> #include <vector> int main() { std::vector<int> vec = {1, 2, 3, 4, 5}; for(auto it = vec.begin(); it != vec.end(); )...
vector迭代器遍历时erase删除元素 #include<vector>#include<iostream>intmain(){usingnamespacestd;vector<int>vec;vec.push_back(1);vec.push_back(2);// 取消++iterfor(autoiter=vec.begin();iter!=vec.end();){if((*iter)==1){//erase函数会返回下一个元素的迭代器指针iter=vec.erase(iter);}else...
#include "stdafx.h" #include "stdio.h" #include <vector> #include #include <string> #include <list> using namespace std; int _tmain(int argc, _TCHAR* argv) printf("run main"); vector<int> vect ; vect.push_back(1); vect.push_back(2); vect.push_back(3); vect.push_back(4)...
vector list map 遍历删除制定元素 防止迭代器失效的实例 方法如下所示: // k_control.cpp : 定义控制台应用程序的入口点。 // #include “stdafx.h” #include “stdio.h” #include#include#include#includeusing namespace std; int _tmain(int argc, _TCHAR* argv[]) { printf(“run main”); vecto...
#include <vector> #include #include <string> #include <list> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { printf(“run main”); vector<int> vect ; vect.push_back(1); vect.push_back(2); vect.push_ba点赞(0...