C++编程经验:vector的遍历删除

Posted 看,未来

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++编程经验:vector的遍历删除相关的知识,希望对你有一定的参考价值。

关于这个话题,网上有太多的版本了。

甚至我自己的博客中也出现了三个版本,以后,以这一篇的版本为准:

正式版本

void del_vec_foreach(vector<int>& vec,int target) {
	for (vector<int>::iterator it = vec.begin(); it != vec.end();) {
		if (*it == target) {
			it = vec.erase(it);
		}
		else {
			++it;
		}
	}
}

错误版本一:

void del_vec_foreach(vector<int>& vec,int target) {
	for (vector<int>::iterator it = vec.begin(); it != vec.end();it++) {
		if (*it == target) {
			it = vec.erase(it);
		}
	}
}

错误版本二:

void del_vec_foreach(vector<int>& vec,int target) {
	for (vector<int>::iterator it = vec.begin(); it != vec.end();) {
		if (*it == target) {
			vec.erase(it++);
		}
		else {
			++it;
		}
	}
}

下面两个版本和第一个版本看着几乎差不多,不解释,运行一下见分晓,
答应我,以后不要再在这个问题上栽跟头了!!!

以上是关于C++编程经验:vector的遍历删除的主要内容,如果未能解决你的问题,请参考以下文章

C++ vector遍历删除

从 C++ std::vector 中删除元素

C++编程经验:别让异常逃离虚构函数!!!

C++编程经验:别让异常逃离虚构函数!!!

尝试在 Python 中重写 C++ 代码时出现问题:删除地图中的项目和“vector.erase(vector.end())”

c++ vector<string>用iterator遍历