Могу ли я скопировать в Мультикарту
Дано 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
он будет проигнорирован. Однако интерфейс требует, чтобы вы его предоставили.