我定义了一变量vector<mystruct>my,我想按条件删除某几个元素,但是这样操作却使cpu到100%了,请问如何删除?难道必须用remove_if吗?
vector<mystruct>::iterator it;
for(it = my.begin(); it!=my.end(); it++) //换成++it也有问题
{
mystruct d = *it;//取出数据来
if (d满足条件)
my.erase(it);
}
vector<mystruct>::iterator it;
for(it = my.begin(); it!=my.end(); it++) //换成++it也有问题
{
mystruct d = *it;//取出数据来
if (d满足条件)
my.erase(it);
}
vector<mystruct>::iterator it;
it = my.begin();
while (it != my.end()) {
mystruct d = *it;
if (d满足条件) {
my.erase(it);
if (my.size()) {
it = my.begin();
}
}else {
it++;
}
}其中it = my.begin() 可能导致有写 数据被重复比较,可以想办法用两个itertor 试试.
vector<mystruct>::iterator it;
it = my.begin();
while (it != my.end()) {
mystruct d = *it;
if (d满足条件) {
my.erase(it);
if (my.size()) {
it = my.begin();
}else {
break;
}
}else {
it++;
}
}