在 std:vector 上使用 erase() 函数时遇到一个奇怪的问题。我使用以下代码:
int count = 0;
for (int itr=0; itr<b.size(); ++itr) {
if (b[count].notEmpty = false) {
b.erase(b.begin()+count);
--count;
}
++count;
}
但是,由于某种原因,实际上并没有从 b 中删除任何元素。b 在别处声明如下:
vector<block_data> b;
其中 block_data 是一个结构,包含布尔值 notEmpty。一些 b 的元素在代码的前面被正确地分配了 notEmpty = false,所以我不确定为什么它们没有被删除。是语法错误还是其他原因?