gpt4 book ai didi

c++ - 我如何使用 std :vector's erase() function properly?

转载 作者:太空狗 更新时间:2023-10-29 19:44:33 24 4
gpt4 key购买 nike

在 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是一个结构体,包含 bool 值notEmpty。 b 的一些元素在代码的前面部分被正确地分配了 notEmpty = false,所以我不确定为什么它们没有被删除。是语法错误还是其他原因?

最佳答案

erase 的使用没有任何问题。问题是 if 条件中的赋值:

if(b[count].notEmpty = false)

这会将 b[count].notEmpty 设置为 false,然后返回 false。这将导致 if 语句的内部主体永远不会运行。

改成

if(b[count].notEmpty == false)

或事件

if(!b[count].notEmpty)

你应该可以开始了。

关于c++ - 我如何使用 std :vector's erase() function properly?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6783669/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com