Sprawdź, czy mapa w C ++ zawiera wszystkie klucze z innej mapy
Planuję użyć dwóch map w C ++, typu:std::map<char, Node>
, gdzieNode
to klasa niestandardowa. Załóżmy, że mam dwie mapym1
im2
tego typu chcę się dowiedzieć, czym1
zawierawszystko klucze obecne wm2
. Innymi słowy, chcę sprawdzić, czy przecięcie zestawu kluczym1
im2
jest taki sam jak zestaw kluczym2
.
Mogę przejrzeć wszystkie kluczem2
i zróbfind()
lubcount()
nam1
, ale to wydawałoby się marnotrawstwem i prawdopodobnie byłoby powolne. Mówię to, ponieważ klucze są przechowywane jako drzewo wyszukiwania binarnego w posortowanym porządku wstd::map
, a więc każdy z find / count zajmie O (logn), a dla następnego key wm2
, ta sama ścieżka w kluczachm1
będzie musiał przejść od początku.
Jestem nowy w STL, więc proszę wybacz moją ignorancję na temat tego, co wydaje się być czymś, co powinno być łatwe do wykonania. Również kilka prostych przykładowych fragmentów kodu lub linków do fragmentów kodu będzie bardzo pomocne w lepszym zrozumieniu. Nie mogę korzystać z niestandardowych bibliotek, w tym z dodatków.
Z góry dziękuję!