向量迭代器在条件下擦除两个元素

用户名

如果满足某些条件,我目前正在尝试从向量中删除2个元素。我可以成功删除单个元素,而不会发生“矢量迭代器不可引用”错误,我知道问题是由于一次删除两个与迭代器弄乱的元素引起的,但不确定删除多个元素的正确方法元素一次。

vector<SomeObj*> objs;

vector<SomeObj*>::iterator it = objs.begin();
while (it != objs.end())
{
    vector<SomeObj*>::iterator it2 = objs.begin();
    bool deleted = 0;

    while (it2 != objs.end())
    {
        if ((*it)->somecondition(**it2))
        {
            delete *it2;
            *it2 = NULL;
            it = objs.erase(it2);

            delete *it;
            *it = NULL;
            it = objs.erase(it); //Will error here due to invalidating the iterator

            deleted = 1;
            break;
        }
        ++it2;
    }

    if (!deleted)
        ++it;
}
拉斯洛·拉丹伊

问题在于,第一次调用clear()可能会使另一个迭代器无效。有关在各种容器中无效的内容的简要概述,请参见这篇文章我想说的最简单的解决方案是先遍历容器并标记要擦除的条目,但不要擦除它们,然后在第二次扫描中仅擦除标记的所有内容。出于性能原因,在第二次扫描中,您应该使用std :: remove_if或使用反向迭代器。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在两个条件下迭代自定义对象的向量

来自分类Dev

熊猫groupby在两个条件下

来自分类Dev

在两个可能的条件下创建验证错误

来自分类Dev

如何在两个条件下使用

来自分类Dev

Linq 在两个条件下加入

来自分类Dev

如何在两个条件下执行 RealmQuery

来自分类Dev

在R中的两个条件下合并两列

来自分类Dev

如何获得两个迭代器之间的元素总数?

来自分类Dev

比较两个数组的元素以及元素是否匹配然后在某些条件下修改另一个数组值的问题

来自分类Dev

在某些条件下,流从一个对象创建两个对象

来自分类Dev

在两个不同的前提条件下运行相同的功能?

来自分类Dev

这两个SQL查询在什么条件下会给出不同的结果?

来自分类Dev

在两个条件下对基于字符串的数组进行排序

来自分类Dev

使用两个表时,SQL在特定条件下获取最大值

来自分类Dev

如何在两个条件下计算Excel中的唯一值

来自分类Dev

在两个Ansible when条件下应检查注册变量的什么属性

来自分类Dev

如何在SQL中的某些条件下使用外键链接两个表?

来自分类Dev

如何在两个条件下增加php中的计数?

来自分类Dev

在两个条件下对基于字符串的数组进行排序

来自分类Dev

这两个SQL查询在什么条件下会给出不同的结果?

来自分类Dev

如何串联两个条件下的字符串?

来自分类Dev

R ::如何在IF条件下检查变量的两个不同值

来自分类Dev

如何使用SQL Server在特定条件下从两个表中检索数据?

来自分类Dev

在 SQL 条件下检查两个日期是否在同一财政年度?

来自分类Dev

如何在sql中找出两个不同条件下字段的最大值

来自分类Dev

INSERT INTO 的sql 在条件下分支到两个表?

来自分类Dev

如何在一行中编写两个要在 if 条件下执行的语句?

来自分类Dev

在多个条件下连接两个表 - SQL Server

来自分类Dev

如何在if条件下循环增加迭代器?

Related 相关文章

  1. 1

    在两个条件下迭代自定义对象的向量

  2. 2

    熊猫groupby在两个条件下

  3. 3

    在两个可能的条件下创建验证错误

  4. 4

    如何在两个条件下使用

  5. 5

    Linq 在两个条件下加入

  6. 6

    如何在两个条件下执行 RealmQuery

  7. 7

    在R中的两个条件下合并两列

  8. 8

    如何获得两个迭代器之间的元素总数?

  9. 9

    比较两个数组的元素以及元素是否匹配然后在某些条件下修改另一个数组值的问题

  10. 10

    在某些条件下,流从一个对象创建两个对象

  11. 11

    在两个不同的前提条件下运行相同的功能?

  12. 12

    这两个SQL查询在什么条件下会给出不同的结果?

  13. 13

    在两个条件下对基于字符串的数组进行排序

  14. 14

    使用两个表时,SQL在特定条件下获取最大值

  15. 15

    如何在两个条件下计算Excel中的唯一值

  16. 16

    在两个Ansible when条件下应检查注册变量的什么属性

  17. 17

    如何在SQL中的某些条件下使用外键链接两个表?

  18. 18

    如何在两个条件下增加php中的计数?

  19. 19

    在两个条件下对基于字符串的数组进行排序

  20. 20

    这两个SQL查询在什么条件下会给出不同的结果?

  21. 21

    如何串联两个条件下的字符串?

  22. 22

    R ::如何在IF条件下检查变量的两个不同值

  23. 23

    如何使用SQL Server在特定条件下从两个表中检索数据?

  24. 24

    在 SQL 条件下检查两个日期是否在同一财政年度?

  25. 25

    如何在sql中找出两个不同条件下字段的最大值

  26. 26

    INSERT INTO 的sql 在条件下分支到两个表?

  27. 27

    如何在一行中编写两个要在 if 条件下执行的语句?

  28. 28

    在多个条件下连接两个表 - SQL Server

  29. 29

    如何在if条件下循环增加迭代器?

热门标签

归档