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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top