所以我有一个无符号整数 vector ( vector<unsigned int>
称为 vector1
)。我有另一个我创建的结构 vector ( vector<struct>
称为 vector2
)。 vector<int>
包含一个整数,它是 vector<struct>
的索引.例如,假设 vector<int = {5, 17, 18, 19}
.这意味着 vector2.at(5) == vector2.at(vector1.at(0))
.
在结构中,我有一个名为 var
的 bool 变量.在大多数情况下,var
是假的。我想删除 vector1
中的所有元素有 var
= 真。
我所做的是:
for (unsigned int i = 0; i < vector1.size(); i++)
{
if (vector2.at(vector1.at(i)).var)
vector1.erase(vector.begin() + i);
}
唯一的问题是它不会删除所有的真实元素。我已经多次运行 for 循环以删除所有值。这是正确的行为吗?如果不是,我哪里出错了?
最佳答案
您必须使用 erase-remove idiom从 vector 中删除元素。
v.erase(std::remove(v.begin(), v.end(), value), v.begin);
std::remove
将元素移动到 vector 的末尾,erase
将从 vector 中删除元素。
关于c++ - 删除 vector 中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14732918/