给定istream_iterator<int>
和multimap<char, int> output
。
我想将所有值复制到output
&#39; '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
吗?
答案 0 :(得分:7)
你非常接近,但你应该使用std::inserter
:
transform(
istream_iterator<int>(input),
istream_iterator<int>(),
inserter(output, begin(output)),
[](const auto value){
return make_pair('a', value);
}
);
第二个参数是提示,但对于multimap
,它将被忽略。但是,界面要求您提供它。