如何检查,如果一个向量是另一个的子集?
-
28-09-2019 - |
题
目前,我认为我的最佳选择是使用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))的用于分选向量。你不会得到任何快于。
不隶属于 StackOverflow