假设我有两个相同类型的地图,第二个地图的键集是第一个地图键集的子集。我想使用第二个地图的值来更新第一个地图中的值(只更新第二个地图包含的键)。我已经编写了一个简单的循环来完成这个操作,但我想知道是否有更好的使用STL算法的方法。
代码示例:
代码示例:
using PersonAgeMap = std::map<std::string, int>;
PersonAgeMap map1;
map1.insert(std::make_pair("John", 23));
map1.insert(std::make_pair("Liza", 19));
map1.insert(std::make_pair("Dad", 45));
map1.insert(std::make_pair("Granny", 77));
PersonAgeMap map2;
map2.insert(std::make_pair("John", 24));
map2.insert(std::make_pair("Liza", 20));
//simple cycle way
for (const auto& person: map2)
{
map1[person.first] = person.second;
}
//is there some another way of doing this using STL algorithms???
for (const auto& person: map1)
{
std::cout << person.first << " " << person.second << std::endl;
}
输出:
Dad 45
Granny 77
John 24
Liza 20
map1[person.first] = person.second;
无条件地插入值,无论之前是否指定了map1[person.first]
。 - πάντα ῥεῖmap
接口以进行范围插入?你是否检查过现有的算法,看看是否可以使用其中的某些内容? - Ulrich Eckhardtmap1["John"] = 23;
而不是map1.insert(std::make_pair("John", 23));
会不会更易读呢?这样可以减少阅读代码的工作量。我想改一下,但在未经您同意之前不会轻举妄动 :-) - Wolf