我可以复制到多图

Jon*_*Mee 4 c++ copy insert multimap key-value-store

鉴于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);
    }
)
Run Code Online (Sandbox Code Playgroud)

但是我收到了错误:

错误:分配只读成员 std::pair<const char, int>::first

我想这意味着我无法写信begin(output).是我唯一的选择for_each吗?

krz*_*zaq 7

你很近,但你应该使用std::inserter:

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

第二个参数是一个提示,但是multimap它会被忽略.但是,界面要求您提供它.

  • @JonathanMee你可以使用它,只是不在这个操作中.实际的`value_type`是`std :: pair <const Key,Value>`你可以使用`begin(m)`来修改值.你无法覆盖密钥,因为那时你必须求助于地图.如果你看一下`std :: set`,那里只有一个const键,你会注意到它没有提供非const迭代器. (2认同)