3
給定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: assignment of read-only member
std::pair<const char, int>::first
我想這意味着我不能寫begin(output)
。我唯一的選擇是使用for_each
嗎?
這超出了原始問題的範圍,但爲什麼'multimap'提供'begin'如果我不能使用它呢?爲什麼不提供'cbegin'? –
@JonathanMee你可以使用它,而不是在這個操作。實際的'value_type'是'std :: pair',你可以使用'begin(m)'來修改這個值。您無法覆蓋密鑰,因爲那樣您必須使用地圖。如果你看看'std :: set',那裏只有一個const鍵,你會注意到它沒有提供非const的迭代器。 –
krzaq
啊,所以你說我可以自由修改由'multimap :: begin'返回的值,但不是鍵值,這也意味着我無法指定。我明白了,謝謝。因此,爲了繼續超出範圍問題,如果'output'已經有內容,我需要做'inserter(output,inserter.lower_bound('a'))'是否正確? –