我可以复制到multimap中吗?

Can I Copy Into a multimap

本文关键字:中吗 multimap 复制 我可以      更新时间:2023-10-16

给定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);
    }
)

但是我得到错误:

error: assign read-only member 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,它将被忽略。但是,界面要求您提供它。