Frage

Zur Zeit, ich glaube, meine beste Option ist std :: set_intersection zu verwenden, und dann prüfen, ob die Größe des kleineren Eingangs ist das gleiche wie die Anzahl der Elemente von set_intersection gefüllt.

Gibt es eine bessere Lösung?

War es hilfreich?

Lösung

Versuchen Sie diese:

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

Über enthält () .

  

enthält () Algorithmus vergleicht zwei   sortierten Sequenzen und gibt true zurück, wenn   jedes Element im Bereich [start2,   Finish2) in dem Bereich enthalten   [Start1, Ende1). Es gibt false zurück   Andernfalls. enthält () geht davon aus, dass die   Sequenzen werden unter Verwendung sortiert   operator <() oder mit dem Prädikat   comp.

läuft in

  

Bei den meisten ((Ende1 - Start1) + (Finish2   - start2)) * 2 -. 1 Vergleiche durchgeführt werden

Plus O (nlog (n)) für Vektoren zu sortieren. Sie werden es nicht schneller jeder als das.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top