假设我有以下内容:
什么是将所有键/值对从m1移动到m2的最直接方法?
我期望:
- 此操作后,m1为空 - m2可能最初有一些键值对 - 那些在m2中没有与m1相同键的键值对应该保持原样 - 那些在m2中与m1有相同键的键值对应该被m1的键值对覆盖
我需要从调用一系列组合吗?
解决方案:
James Kranze的解决方案满足我的要求。
std::map<KEY,VALUE> m1;
std::map<KEY,VALUE> m2;
什么是将所有键/值对从m1移动到m2的最直接方法?
我期望:
- 此操作后,m1为空 - m2可能最初有一些键值对 - 那些在m2中没有与m1相同键的键值对应该保持原样 - 那些在m2中与m1有相同键的键值对应该被m1的键值对覆盖
我需要从调用一系列组合吗?
解决方案:
James Kranze的解决方案满足我的要求。
for( const auto& p : m1 )
m2[ p.first ] = p.second;
m1.clear();
Joachim Pileborg的建议仅在m2和m1没有相同的键(即对于相同的键,m2的值不会被m1的值覆盖)时才起作用。
std::move( m1.begin(), m1.end(), std::inserter( m2, m2.begin() ));
list::splice
。当你思考时,关联容器没有交换节点的接口是相当令人惊讶的。 - Matthieu M.