我可以复制到多图

时间:2016-10-21 15:11:32

标签: c++ insert copy multimap key-value-store

给定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吗?

1 个答案:

答案 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,它将被忽略。但是,界面要求您提供它。