加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 如何正确使用std:vector的erase()函数?

发布时间:2020-12-16 10:29:40 所属栏目:百科 来源:网络整理
导读:在std:vector上使用erase()函数时,我遇到了一个奇怪的问题.我使用以下代码: int count = 0;for (int itr=0; itrb.size(); ++itr) { if (b[count].notEmpty = false) { b.erase(b.begin()+count); --count; } ++count;} 但是,由于某些原因,实际上没有任何元
在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,因此我不确定它们为什么不被删除.是语法错误还是其他错误?

解决方法

使用擦除没有任何问题.问题是if条件中的赋值:

if(b[count].notEmpty = false)

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

将其更改为

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

或事件

if(!b[count].notEmpty)

你应该好好去.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读