Проверьте, содержит ли карта в 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.

Заранее спасибо!

Ответы на вопрос(1)

Ваш ответ на вопрос