Учитывая istream_iterator<int>
а также multimap<char, int> output
,
Я хочу скопировать все значения в output
«s '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
?
Вы очень близки, но вы должны использовать std::inserter
:
transform(
istream_iterator<int>(input),
istream_iterator<int>(),
inserter(output, begin(output)),
[](const auto value){
return make_pair('a', value);
}
);
Второй параметр — это подсказка, но для multimap
это будет игнорироваться. Интерфейс требует, чтобы вы предоставили его, хотя.
Других решений пока нет …