如何过滤std :: list并删除与另一个列表相比不匹配的项目?

哈伦B10

我正在尝试从另一个列表中删除与元素不匹配的元素。

例如,我有std::list<MyClass> mainList这样的东西:

ID      Number
-------------
1       100
2       200
3       200
4       100
5       300

我还有一个std::list<long> itemsForFiltering包含的内容:100, 300

在这里,我试图删除所有mainList不在其中的元素itemsForFiltering

int filterList(std::list<MyClass> &mainList, std::list<long> &itemsForFiltering)
{
    mainList.remove_if([](MyClass &val)
    {
        return val.Number != itemsForFiltering;
    });

    return 0;
}

这部分可能还需要一个lambda函数,return val.Number != itemsForFiltering;但我不确定如何实现。因此,任何帮助表示赞赏。

调用此函数后,我应该在mainList

ID      Number
-------------
1       100
4       100
5       300
阿米·塔沃里(Ami Tavory)

为了提高效率,您可以先创建一组无序的项目进行过滤:

#include <unordered_set>

using namespace std;
...

auto itemsForFilteringSet = unordered_set<long>{itemsForFiltering};

现在您可以使用

mainList.remove_if([&](MyClass &val)
{
    return itemsForFilteringSet.find(val) == itemsForFilteringSet.end();
});

这将使复杂度线性变化,而不是列表长度的乘积。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

与另一个表相比,如何在表中找到额外/不同的行?

来自分类Dev

如何从另一个项目列表中过滤一个项目列表?

来自分类Dev

如果我的条件匹配,如何从另一个列表中选择项目?

来自分类Dev

如何使用另一个列表从一个列表中删除匹配的元素?蟒蛇

来自分类Dev

如何从另一个列表创建项目列表

来自分类Dev

根据另一个对象数组过滤对象数组。删除数组值与另一个对象数组中的数组值匹配的项目

来自分类Dev

如何从SwiftUI的另一个视图中删除列表的项目?

来自分类Dev

如何从包含另一个列表中的项目中找到的单词的列表中删除项目

来自分类Dev

如何从包含另一个列表中的项目中找到的单词的列表中删除项目

来自分类Dev

如何以分隔的间隔将项目插入列表以匹配另一个列表的len?

来自分类Dev

如何检查列表框中的任何项目是否与另一个列表框匹配

来自分类Dev

如何在列表中的另一个项目之后添加一个项目?

来自分类Dev

Linux如何删除前缀与另一个文件夹不匹配的文件夹中的文件?

来自分类Dev

如何从另一个列表中删除一个列表?

来自分类Dev

如果同一项目存在于另一个列表中,如何从一个Excel列表中删除它

来自分类Dev

如何从一个表中删除与另一个表匹配的行?

来自分类Dev

如何设置一个表的外键值必须与另一个表相同

来自分类Dev

Linq to Entities-过滤一个列表中属于另一个列表的任何项目

来自分类Dev

如何删除一个类属性,它是另一个类的列表

来自分类Dev

针对另一个列表中的项目过滤流

来自分类Dev

如何从数组中删除与另一个数组中的项目相等的项目?

来自分类Dev

如何检查一个列表是否包含另一个列表子列表中的项目?

来自分类Dev

如何从另一个列表中订购具有匹配键的对象列表?

来自分类Dev

如何在AppleScript中返回列表项的名称并使列表与另一个匹配?

来自分类Dev

如何将一个列表的2个项目分组到另一个列表中

来自分类Dev

根据另一个列表过滤通用列表

来自分类Dev

如何计算也出现在另一个列表中的列表中的项目?

来自分类Dev

如何将列表对象的项目放入另一个列表

来自分类Dev

在C#中,如何使用另一个列表的StartsWith()条件过滤列表?

Related 相关文章

  1. 1

    与另一个表相比,如何在表中找到额外/不同的行?

  2. 2

    如何从另一个项目列表中过滤一个项目列表?

  3. 3

    如果我的条件匹配,如何从另一个列表中选择项目?

  4. 4

    如何使用另一个列表从一个列表中删除匹配的元素?蟒蛇

  5. 5

    如何从另一个列表创建项目列表

  6. 6

    根据另一个对象数组过滤对象数组。删除数组值与另一个对象数组中的数组值匹配的项目

  7. 7

    如何从SwiftUI的另一个视图中删除列表的项目?

  8. 8

    如何从包含另一个列表中的项目中找到的单词的列表中删除项目

  9. 9

    如何从包含另一个列表中的项目中找到的单词的列表中删除项目

  10. 10

    如何以分隔的间隔将项目插入列表以匹配另一个列表的len?

  11. 11

    如何检查列表框中的任何项目是否与另一个列表框匹配

  12. 12

    如何在列表中的另一个项目之后添加一个项目?

  13. 13

    Linux如何删除前缀与另一个文件夹不匹配的文件夹中的文件?

  14. 14

    如何从另一个列表中删除一个列表?

  15. 15

    如果同一项目存在于另一个列表中,如何从一个Excel列表中删除它

  16. 16

    如何从一个表中删除与另一个表匹配的行?

  17. 17

    如何设置一个表的外键值必须与另一个表相同

  18. 18

    Linq to Entities-过滤一个列表中属于另一个列表的任何项目

  19. 19

    如何删除一个类属性,它是另一个类的列表

  20. 20

    针对另一个列表中的项目过滤流

  21. 21

    如何从数组中删除与另一个数组中的项目相等的项目?

  22. 22

    如何检查一个列表是否包含另一个列表子列表中的项目?

  23. 23

    如何从另一个列表中订购具有匹配键的对象列表?

  24. 24

    如何在AppleScript中返回列表项的名称并使列表与另一个匹配?

  25. 25

    如何将一个列表的2个项目分组到另一个列表中

  26. 26

    根据另一个列表过滤通用列表

  27. 27

    如何计算也出现在另一个列表中的列表中的项目?

  28. 28

    如何将列表对象的项目放入另一个列表

  29. 29

    在C#中,如何使用另一个列表的StartsWith()条件过滤列表?

热门标签

归档