Могу ли я скопировать в Мультикарту
Дано istream_iterator<int> и multimap<char, int> output.
Я хочу скопировать все значения в output ключ 'a'.
Как лучше всего с этим справиться?
Я пытался использовать:
transform(
istream_iterator<int>(input),
istream_iterator<int>(),
begin(output),
[](const auto value){
return make_pair('a', value);
}
)
Но я получаю ошибку:
Я думаю, это означает, что я не могу писатьОшибка: назначение элемента только для чтения
std::pair<const char, int>::first
begin(output). Является ли мой единственный вариант использовать for_each?1 ответ:
Вы очень близки, но вы должны использовать
std::inserter:transform( istream_iterator<int>(input), istream_iterator<int>(), inserter(output, begin(output)), [](const auto value){ return make_pair('a', value); } );Второй параметр является подсказкой, но для
multimapон будет проигнорирован. Однако интерфейс требует, чтобы вы его предоставили.