Как я могу проверить, является ли один вектор подмножественным?
-
28-09-2019 - |
Вопрос
В настоящее время я думаю, что мой лучший вариант - использовать STD :: SET_INTERSECTION, а затем проверьте, будет ли размер меньшего входа такой же, как число элементов, заполненных Set_Internersection.
Есть ли лучшее решение?
Решение
Попробуй это:
if (std::includes(set_one.begin(), set_one.end(),
set_two.begin(), set_two.end()))
{
// ...
}
Алгоритм включения () сравнивает две отсортированные последовательности и возвращает true, если каждый элемент в диапазоне [start2, Finish2) содержится в диапазоне [Start1, Finish1). Это возвращает false в противном случае. Включает в себя () предполагает, что последовательности сортируются с использованием оператора <() или с помощью предиката Comp.
бежит внутрь
Несомненно ((Finish1 - Start1) + (Finate2 - Start2)) * 2 - 1 сравнения выполняются.
Плюс o (nlog (n)) для сортировки векторов. Вы не получите это быстрее, чем это.