Ich versuche einen einfachen Weg zu finden, um zu überprüfen, ob ein Vektor eine Untermenge eines anderen ist, ohne die Reihenfolge der Elemente im Vektor zu sortieren. Beide Vektoren enthalten Zufallszahlenelemente in ihnen.
std::includes
scheint nur für sortierte Bereiche zu funktionieren. Wie kann ich das erreichen?
Kopieren Sie die Vektoren. Sortieren Sie die Kopien. Dann verwende std::includes
auf den Kopien.
Meine Antwort geht davon aus, dass Sie, wenn Sie "subset" sagen, mehr nach dem Äquivalent einer "substring" suchen; Das heißt, die Reihenfolge der Elemente während der Suche beibehalten.
Letztlich kann ich nicht sehen, wie Sie das in etwas weniger als O(n*m)
tun können. In Anbetracht dessen können Sie einfach Ihre eigenen ganz einfach rollen:
(Sie könnten mit den Vorlagenparametern wahrscheinlich kreativer sein.)
Das geht davon aus, dass Duplikate NICHT wichtig sind. Wenn Sie also zwei Instanzen der Zahl 99 in Vektor a haben, dann wird, solange Vektor b mindestens eine Instanz der Zahl 99 hat, diese als Teilmenge deklariert.
%Vor%