我正在寻找一种将值从一个 map 复制到另一个 map 的方法,类似于 this question ,但我不希望第二张 map 覆盖冲突的值,我希望原始值保持不变。
例如,如果我有两个 map {a: 1, b: 2}
,我将 {b: 3, c: 4}
复制到其中,第一张 map 将修改为 {a: 1, b: 2, c: 4}
。
有没有办法使用标准库函数来执行此操作,还是我需要通过迭代和检查冲突值手动执行此操作?
最佳答案
有一个版本的 map.insert
采用两个迭代器。如果项目(键)已经存在于目标映射中,则插入失败,因此这正是您想要的。
#include <iostream>
#include <map>
int main() {
std::map<char, int> stuff;
stuff['a'] = 1;
stuff['b'] = 2;
std::map<char, int> stuff2;
stuff2['b'] = 3;
stuff2['c'] = 4;
stuff.insert(stuff2.begin(), stuff2.end());
for (auto i : stuff)
std::cout << i.first << "\t" << i.second << "\n";
}
结果:
a 1
b 2
c 4
关于c++ - 有没有办法使用 std::copy 复制不冲突的映射值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17205486/