Проверьте, содержит ли карта в C ++ все ключи от другой карты
Я планирую использовать две карты в C ++, типа:std::map<char, Node>
, гдеNode
это пользовательский класс. Предположим, у меня есть две карты,m1
а такжеm2
типа выше, я хочу выяснить,m1
содержитall ключи присутствуют вm2
, Другими словами, я хочу убедиться, что пересечение набора ключейm1
а такжеm2
такой же, как набор ключейm2
.
Я мог бы перебрать все ключи вm2
и сделатьfind()
или жеcount()
наm1
, но это кажется пустой тратой и, вероятно, будет медленным. Я говорю это потому, что ключи хранятся в виде двоичного дерева поиска в отсортированном порядке вstd::map
, и поэтому каждый из find / count будет принимать O (logn), а для следующего ключаm2
, тот же путь в ключахm1
придется проходить с самого начала.
Я новичок в STL, поэтому, пожалуйста, прости мое невежество в отношении того, что кажется легко выполнимым. Кроме того, некоторые простые примеры фрагментов кода или ссылки на фрагменты кода будут очень полезны для лучшего понимания. Я не могу использовать нестандартные библиотеки, в том числе boost.
Заранее спасибо!