Я прочитал вопрос Слияние двух карт STL , и хотя он близок, я искал функциональность, подобную описанной здесь .
Короче говоря, я хотел бы объединить два std::map
экземпляра (с одинаковым ключом и типом значения) в один, с оговоркой, что я хотел бы добавить значения вместе, если объект существует на обеих картах.
Существует ли существующая функция boost , range-v3 или std , которая может сделать это? А если нет, то как лучше всего это сделать?
Пример кода:
double mergePredicate(double lhs, double rhs)
{
return lhs + rhs;
}
int main()
{
std::map<int, double> mapA = { {0, 1.0}, {1, 2.0} };
std::map<int, double> mapB = { {1, 1.5}, {2, 2.5} };
// Merge maps in some way...
merge(mapA, mapB, mergePredicate);
// result: mapA == { {0, 1.0}, {1, 3.5}, {2, 2.5} }
for (const auto& p : mapA) {
std::cout << p.first << " " << p.second << std::endl;
}
}