在使用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,因此我不确定它们为什么没有被清除。这是语法错误还是其他问题?
!x.notEmpty
(x不是非空)的双重否定逻辑表明您应该将notEmpty
重命名为empty
。 - Jon Purdy