Предположим, у меня есть следующее:
std::map<KEY,VALUE> m1;
std::map<KEY,VALUE> m2;
Какой самый прямой способ переместить все пары ключ / значение из m1
в m2
?
Я бы ожидал:
- m1 будет пустым после этой операции
- м2 может изначально иметь пары
- те пары в м2, которые не имеют одинаковыеключ как m1 должен быть оставлен в покое
- те пары в м2, которые имеют тот же ключ, что и m1, должны быть перезаписаны парами m1
Нужна ли комбинация вызовов из <algorithm>
?
Решение
Решение Джеймса Кранза удовлетворяет моим требованиям.
for( const auto& p : m1 )
m2[ p.first ] = p.second;
m1.clear();
Рекомендация Иоахима Пилеборга будет работать, только если m2и у m1 нет одинакового ключа (т.е. значение m2 не будет перезаписано значением m1 для того же ключа)
std::move( m1.begin(), m1.end(), std::inserter( m2, m2.begin() ));