如何相对于其他元素过滤向量元素?

皮埃尔

我是向量的向量,每个向量代表一个集合(在数学意义上)。例如:

{{1, 3}, {4, 9, 14}, {1, 3}, {1, 4, 8, 9, 10, 14, 16}, {1, 3, 9}, {4, 9, 17, 22}}

我想使最有效的C ++可能函数能够过滤(如果可能的话)向量,以便删除包含另一个项的每个项。

例如,在这里:

  • {1, 3}{1, 3}包含{1, 3, 9}
  • {4, 9, 14} 包含在 {1, 4, 8, 9, 10, 14, 16}

生成的向量将是:

{{1, 3}, {4, 9, 14}, {4, 9, 17, 22}}

因为我从C ++开始,所以对如何有效地执行此操作实际上一无所知。在这里的其他答案上,我发现了“擦除/删除”惯用法,在这里似乎不太合适,除了通过传递一个闭包作为谓词。在C ++中,这似乎并不是真正的习惯用法。

请注意,保持原始顺序并不重要,每个集合内的值顺序也不重要。

皮埃尔

鉴于我学会为止,由于你非常有益的意见,我想出了解决的办法是:

struct std::vector<size_t> colset;

bool less_colsets(const colset& a, const colset& b) {
  return a.size() < b.size();
}

void sort_colsets(std::list<colset>& l) {
  l.sort(less_colsets);
}

void strip_subsets(std::list<colset>& l) {
  sort_colsets(l);
  for (std::list<colset>::iterator i = l.begin(); i != l.end(); ++i) {
    std::list<colset>::iterator j = next(i, 1);
    while (j != l.end()) {
      if (includes((*j).begin(), (*j).end(), (*i).begin(), (*i).end())) {
        j = l.erase(j);
      }
      else {
        ++j;
      }
    }
  }
}

请注意,我替换了最外面的东西std::vectorstd::list该东西对于在任何地方的元素删除都更加优化。

尽管我需要更多测试才能证明这一点,但是这似乎按预期工作。下一步将使用比更加有效的比较函数includes,该函数将考虑每个向量按词法排序(程序保证)的事实。我明天试试。

编辑:看起来std::includes已经照顾到这个事实。好极了!

谢谢大家。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

相对于其他元素转换scaleX

来自分类Dev

相对于其他元素转换scaleX

来自分类Dev

在CSS中,无论其他同级元素如何,如何将元素相对于包含元素居中?

来自分类Dev

根据对象的属性值(相对于它在其他元素中出现的次数)来过滤数组

来自分类Dev

如何在没有“移动效果”的情况下在 Unity 中显示相对于其他元素的元素?

来自分类Dev

相对于其他两个元素的CSS位置元素

来自分类Dev

如何在 C# 中的矩阵中相对于其他行中的其他元素标记行中的元素

来自分类Dev

Selenium Webdriver:使用相对于其他元素的路径进行页面工厂初始化?

来自分类Dev

如何相对于高度变化的顶部元素移动元素

来自分类Dev

如何设置元素相对于其祖父元素的高度?

来自分类Dev

如何使HTML页面上的所有相对URL都相对于其所在的其他域(在HTML元素以及JS HTTP请求中)?

来自分类Dev

CSS下拉菜单,其中子菜单相对于其他元素的绝对/相对位置

来自分类Dev

相对于父元素的位置元素

来自分类Dev

如何相对于其他div定位绝对div

来自分类Dev

如何相对于其他for循环中断for循环

来自分类Dev

如何使用相对于父元素的绝对位置

来自分类Dev

如何相对于居中同级放置元素

来自分类Dev

如何相对于居中同级放置元素

来自分类Dev

如何获取元素相对于浏览视口的位置

来自分类Dev

元素如何有固定的位置,但相对于容器

来自分类Dev

角材料:如何相对于元素定位MatDialog?

来自分类Dev

如何使用相对于父元素的绝对位置

来自分类Dev

如何相对于图像定位此元素?

来自分类Dev

如何获得相对于父元素的位置?

来自分类Dev

如何获取元素相对于窗口的当前位置

来自分类Dev

成对距离python(一个相对于许多其他向量的基本向量)

来自分类Dev

成对距离python(一个相对于许多其他向量的基本向量)

来自分类Dev

元素相对于其父级的坐标

来自分类Dev

相对于父容器的位置元素

Related 相关文章

  1. 1

    相对于其他元素转换scaleX

  2. 2

    相对于其他元素转换scaleX

  3. 3

    在CSS中,无论其他同级元素如何,如何将元素相对于包含元素居中?

  4. 4

    根据对象的属性值(相对于它在其他元素中出现的次数)来过滤数组

  5. 5

    如何在没有“移动效果”的情况下在 Unity 中显示相对于其他元素的元素?

  6. 6

    相对于其他两个元素的CSS位置元素

  7. 7

    如何在 C# 中的矩阵中相对于其他行中的其他元素标记行中的元素

  8. 8

    Selenium Webdriver:使用相对于其他元素的路径进行页面工厂初始化?

  9. 9

    如何相对于高度变化的顶部元素移动元素

  10. 10

    如何设置元素相对于其祖父元素的高度?

  11. 11

    如何使HTML页面上的所有相对URL都相对于其所在的其他域(在HTML元素以及JS HTTP请求中)?

  12. 12

    CSS下拉菜单,其中子菜单相对于其他元素的绝对/相对位置

  13. 13

    相对于父元素的位置元素

  14. 14

    如何相对于其他div定位绝对div

  15. 15

    如何相对于其他for循环中断for循环

  16. 16

    如何使用相对于父元素的绝对位置

  17. 17

    如何相对于居中同级放置元素

  18. 18

    如何相对于居中同级放置元素

  19. 19

    如何获取元素相对于浏览视口的位置

  20. 20

    元素如何有固定的位置,但相对于容器

  21. 21

    角材料:如何相对于元素定位MatDialog?

  22. 22

    如何使用相对于父元素的绝对位置

  23. 23

    如何相对于图像定位此元素?

  24. 24

    如何获得相对于父元素的位置?

  25. 25

    如何获取元素相对于窗口的当前位置

  26. 26

    成对距离python(一个相对于许多其他向量的基本向量)

  27. 27

    成对距离python(一个相对于许多其他向量的基本向量)

  28. 28

    元素相对于其父级的坐标

  29. 29

    相对于父容器的位置元素

热门标签

归档