关于这个话题,网上有太多的版本了。
甚至我自己的博客中也出现了三个版本,以后,以这一篇的版本为准:
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;
}
}
}
下面两个版本和第一个版本看着几乎差不多,不解释,运行一下见分晓, 答应我,以后不要再在这个问题上栽跟头了!!!