Как эффективно сравнить две карты строк в C++ только для подмножества ключей

Мне интересно, можно ли, применяя некоторые стандартные алгоритмы, написать короткую функцию, которая сравнивает две std::map и возвращает true, если все пары ключ-значение (но некоторые) истинны.

Например, эти две карты должны быть оценены как равные

map<string,string> m1, m2;

m1["A"]="1";
m2["A"]="1";

m1["B"]="2";
m2["B"]="2";

m1["X"]="30";
m2["X"]="340";

m1["Y"]="53";
m2["Y"]="0";

Предположим, что две карты имеют одинаковый размер и все их элементы должны быть попарно сравнены, кроме значения, хранящегося по ключу "X" и по ключу "Y". Первой попыткой будет очень неэффективный двойной вложенный цикл for. Я уверен, что можно найти лучшее решение.

32
задан Ciro Santilli 新疆改造中心法轮功六四事件 6 November 2019 в 12:16
поделиться