Как я могу проверить, является ли один вектор подмножественным?

StackOverflow https://stackoverflow.com/questions/4068141

  •  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)) для сортировки векторов. Вы не получите это быстрее, чем это.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top