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) 你应该好好去. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |