Überprüfen Sie, ob die Karte in C ++ alle Schlüssel einer anderen Karte enthält
Ich plane, zwei Maps in C ++ zu verwenden, vom Typ:std::map<char, Node>
, woherNode
ist eine benutzerdefinierte Klasse. Angenommen, ich habe zwei Karten,m1
undm2
von dem oben genannten Typ möchte ich herausfinden, obm1
enthältalles Schlüssel vorhanden inm2
. Mit anderen Worten, ich möchte überprüfen, ob der Schnittpunkt des Schlüsselsatzes vonm1
undm2
ist dasselbe wie der Tastensatz vonm2
.
Ich könnte über alle Tasten iterierenm2
und mache afind()
odercount()
aufm1
, aber das scheint eine Verschwendung und wäre wahrscheinlich langsam. Ich sage das, weil die Schlüssel als binärer Suchbaum in sortierter Reihenfolge in einem gespeichert sindstd::map
, und so nimmt jeder von find / count O (logn) und gibt für den nächsten einm2
, der gleiche Weg in den Tasten vonm1
muss von Anfang an durchquert werden.
Ich bin neu in STL, bitte verzeihen Sie mir meine Unwissenheit über etwas, das leicht zu tun ist. Außerdem sind einige einfache Beispielcode-Snippets oder Links zu Code-Snippets sehr hilfreich, um das besser zu verstehen. Ich kann keine Nicht-Standard-Bibliotheken, einschließlich Boost, verwenden.
Danke im Voraus!