Question

À l'heure actuelle, je pense que ma meilleure option est d'utiliser std :: set_intersection, puis vérifier si la taille de l'entrée plus petite est le même que le nombre d'éléments remplis par set_intersection.

Y at-il une meilleure solution?

Était-ce utile?

La solution

Essayez ceci:

if (std::includes(set_one.begin(), set_one.end(),
                  set_two.begin(), set_two.end()))
{
// ...
}

A propos de comprend () .

  

L'algorithme comprend () compare deux   séquences triées et renvoie vrai si   chaque élément dans l'intervalle [start2,   finish2) est contenu dans la plage   [Start1, Fin1). Il retourne false   autrement. comprend () suppose que le   Les séquences sont triées en utilisant   opérateur <(), ou en utilisant le prédicat   comp.

fonctionne dans

  

Au plus ((Fin1 - start1) + (finish2   - start2)) * 2. - 1 comparaisons sont effectuées

De plus O (nlog (n)) pour des vecteurs de tri. Vous ne l'obtiendrez pas plus vite que cela.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top