Могу ли я скопировать в мультикарту

Учитывая 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?

3

Решение

Вы очень близки, но вы должны использовать std::inserter:

transform(
istream_iterator<int>(input),
istream_iterator<int>(),
inserter(output, begin(output)),
[](const auto value){
return make_pair('a', value);
}
);

Второй параметр — это подсказка, но для multimap это будет игнорироваться. Интерфейс требует, чтобы вы предоставили его, хотя.

7

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]