Как объединить две карты в C ++ так, чтобы значения тех же ключей добавлялись, в противном случае создавались? - PullRequest
0 голосов
/ 15 октября 2018

Я думаю, что заголовок довольно понятен, это пример того, чего я хочу достичь без необходимости перебирать ключи и добавлять их вручную, мне было интересно, существует ли более быстрое решение (какая-то функция или методика)...)

Пример:

std::map<int,int> a, b, c;
a[0] = 2;
a[2] = 5;
b[0] = 6;
b[1] = 1;

, и в результате получается карта c, которая кратко содержит:

std::cout << c[0] << std::endl; // prints 8
std::cout << c[1] << std::endl; // prints 1
std::cout << c[2] << std::endl; // prints 5

:

if key exists : add the values
else create it with the current value

Заранее спасибо!

1 Ответ

0 голосов
/ 15 октября 2018

это пример того, чего я хочу достичь без необходимости перебирать ключи и добавлять их вручную,

Я не думаю, что вы можете достичь своей цели без итерациипо содержанию карт.

Самый простой способ, который я могу придумать, заключается в следующем:

c = a;
for ( auto const& item : b )
{
   c[item.first] += item.second;
}
...