Ü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!

Antworten auf die Frage(1)

Ihre Antwort auf die Frage