目前,我认为我的最佳选择是使用std :: set_intersection,然后检查较小的输入的大小是一样的set_intersection填充元素的数目。

是否有更好的溶液

有帮助吗?

解决方案

尝试这种情况:

if (std::includes(set_one.begin(), set_one.end(),
                  set_two.begin(), set_two.end()))
{
// ...
}

关于包括()

  

在包括()算法比较两个   排序的序列,并返回true,如果   在范围内的每个元素[START2,   finish2)被包含在所述范围内   [启动1,finish1)。它返回false   除此以外。包括()假定   序列使用排序   操作者<(),或使用谓词   可比。

在运行

  

目前最((finish1 - 启动1)+(finish2    - START2))* 2 - 。进行1个比较

加上O(n日志(n))的用于分选向量。你不会得到任何快于。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top