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的遍历删除的主要内容,如果未能解决你的问题,请参考以下文章