Учитывая строку s, как я могу использовать transform для создания unordered_map, который содержит количество встречений каждого символа? Стоит ли беспокоиться?
Первоначально я думал о том, чтобы использовать преобразование, но я не был уверен, как реализовать часть «значение приращения, если существует, иначе добавить». Вместо этого я использовал for_each.
Использование for_each:
unordered_map<char, int> charMap;
for_each(begin(s), end(s), [&charMap](char c){charMap[c]++;});
Я надеялся, что смогу сделать что-то подобное, но для карты вместо мультикарты:
unordered_multimap<char, int> charMap2;
transform(begin(s), end(s), inserter(charMap2, begin(charMap2)), [&](char c){
return make_pair(c, 1);
});
UPDATE:
Посмотрите комментарий @ patatahooligan, чтобы узнать, почему трансформация (предназначенная для преобразований 1-к-1), хотя и достаточно хакерская, чтобы заставить ее работать, может не подходить здесь.
Смотрите ответ Максима (принятый) для более подходящих стратегий.