Como faço para verificar se um vetor é um subconjunto de outro?
-
28-09-2019 - |
Pergunta
Atualmente, acho que minha melhor opção é usar o std :: set_intersection e verifique se o tamanho da entrada menor é o mesmo que o número de elementos preenchidos pelo set_intersection.
Existe uma solução melhor?
Solução
Experimente isso:
if (std::includes(set_one.begin(), set_one.end(),
set_two.begin(), set_two.end()))
{
// ...
}
Sobre inclui ().
O algoritmo inclui () compara duas seqüências classificadas e retorna true se todos os elementos no intervalo [START2, FINAL2) estiverem contidos no intervalo [START1, FINAL1). Ele retorna false caso contrário. inclui () pressupõe que as seqüências sejam classificadas usando o operador <() ou usando o COMP.
corre
No máximo ((FINAL1 - START1) + (FINAL2 - START2) * 2 - 1 Comparações são realizadas.
Mais O (nlog (n)) para classificar vetores. Você não conseguirá mais rápido que isso.