std :: set_intersection适用于排序范围,[[]适用于未排序范围/容器

刺柏

std::set_intersection接受元素的排序范围(井,迭代器对)。但是,假设我有未排序的数据,例如2 std::unordered_set有交叉路口的标准设施吗?

托马斯·卡梅耶

在这种情况下,没有捷径可走。您应该检查较小集合中的每个元素是否具有较大集合中的成员资格,如果找到,则将其插入到输出集合中。由于unordered_set是使用带有桶的哈希表实现的,因此查找时间(具有不错的哈希函数和合理的哈希表最大负载)应该很小。您应该能够在较小的集合上编写对for_each的调用,从而对较大的集合进行检查,并将插入插入输出集合,而不会变得太难看。

如果要在两个原始集合之一中就地构建相交,则可以检查其每个元素是否在另一个集合中,如果没有,则删除该元素。可以用remove_if写入将保存结果的unordered_set上。

另一个选择是将copy_if与插入迭代器一起使用。在相同的时间和空间内,有许多选项可以执行此操作。选择一种似乎可以优化以提高清晰度的工具。

我知道没有固定的库函数可以为您完成此任务。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

用户定义的容器不适用于std :: ranges

来自分类Dev

适用于(仅)插入和迭代的std容器

来自分类Dev

std::bind 不适用于参考?

来自分类Dev

重载的operator <<模板不适用于std :: list,尽管适用于std :: vector

来自分类Dev

std :: bind不适用于std :: sort

来自分类Dev

std :: cin适用于少量的行,但不适用于较大的行

来自分类Dev

lang不适用于std :: experimental :: optional

来自分类Dev

javaout typemap不适用于指针的std :: vector

来自分类Dev

std :: map查找不适用于C ++

来自分类Dev

makefile不适用于-std = c ++ 11选项

来自分类Dev

std :: strong_ordering如何仅适用于零?

来自分类Dev

std :: ofstrean不适用于-O3

来自分类Dev

javaout typemap不适用于指针的std :: vector

来自分类Dev

M_PI不适用于gcc --std = c11但适用于--std = gnu11?

来自分类Dev

std :: for_each和std :: execution :: par_unseq不适用于GCC,但适用于MSVC

来自分类Dev

std :: tuple的自定义哈希不适用于unordered_set

来自分类Dev

std:find()用于排序与未排序

来自分类Dev

从C ++到OpenGL的数据复制可使用自定义容器,但不适用于std :: tuple

来自分类Dev

为什么std :: equality_comparable不适用于std :: vector

来自分类Dev

警告:分解声明仅适用于-std = c ++ 1z或-std = gnu ++ 1

来自分类Dev

jQuery表排序器不适用于日期范围字符串

来自分类Dev

查找功能不适用于未排序的列表

来自分类Dev

适用于REF表的范围

来自分类Dev

每年范围都适用于数组

来自分类Dev

为什么return {};不适用于std :: forward_list?

来自分类Dev

具有std :: string的文字类仅适用于模板专业化?

来自分类Dev

不将std :: string嵌入异常的规则是否仍然适用于move构造函数?

来自分类Dev

std :: equal_range不适用于具有operator <定义的strucutre

来自分类Dev

使用移动的std :: string的.data()成员不适用于小的字符串?

Related 相关文章

  1. 1

    用户定义的容器不适用于std :: ranges

  2. 2

    适用于(仅)插入和迭代的std容器

  3. 3

    std::bind 不适用于参考?

  4. 4

    重载的operator <<模板不适用于std :: list,尽管适用于std :: vector

  5. 5

    std :: bind不适用于std :: sort

  6. 6

    std :: cin适用于少量的行,但不适用于较大的行

  7. 7

    lang不适用于std :: experimental :: optional

  8. 8

    javaout typemap不适用于指针的std :: vector

  9. 9

    std :: map查找不适用于C ++

  10. 10

    makefile不适用于-std = c ++ 11选项

  11. 11

    std :: strong_ordering如何仅适用于零?

  12. 12

    std :: ofstrean不适用于-O3

  13. 13

    javaout typemap不适用于指针的std :: vector

  14. 14

    M_PI不适用于gcc --std = c11但适用于--std = gnu11?

  15. 15

    std :: for_each和std :: execution :: par_unseq不适用于GCC,但适用于MSVC

  16. 16

    std :: tuple的自定义哈希不适用于unordered_set

  17. 17

    std:find()用于排序与未排序

  18. 18

    从C ++到OpenGL的数据复制可使用自定义容器,但不适用于std :: tuple

  19. 19

    为什么std :: equality_comparable不适用于std :: vector

  20. 20

    警告:分解声明仅适用于-std = c ++ 1z或-std = gnu ++ 1

  21. 21

    jQuery表排序器不适用于日期范围字符串

  22. 22

    查找功能不适用于未排序的列表

  23. 23

    适用于REF表的范围

  24. 24

    每年范围都适用于数组

  25. 25

    为什么return {};不适用于std :: forward_list?

  26. 26

    具有std :: string的文字类仅适用于模板专业化?

  27. 27

    不将std :: string嵌入异常的规则是否仍然适用于move构造函数?

  28. 28

    std :: equal_range不适用于具有operator <定义的strucutre

  29. 29

    使用移动的std :: string的.data()成员不适用于小的字符串?

热门标签

归档