3
에 복사 할 수 있습니까?<code>istream_iterator<int></code> 및 <code>multimap<char, int> output</code>을 사용하면 다중 맵
모든 값을 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)'을 사용하여 값을 수정할 수 있습니다. 키를 덮어 쓸 수는 없습니다. 왜냐하면지도를 사용해야하기 때문입니다. const 키가있는'std :: set'을 보면 const가 아닌 반복자를 제공하지 않는다는 것을 알 수 있습니다. –
krzaq
아, 그래서'multimap :: begin'에 의해 반환 된 값을 자유롭게 수정할 수 있지만 키를 수정할 필요가 없다는 것을 말하고 있습니다. 이것은 또한 할당 할 수 없다는 것을 의미합니다. 나는 그것을 얻는다, 고마워. 범위 문제를 넘어서서 계속하기 위해서는'output'에 이미 내용이 있다면'inserter (출력, inserter.lower_bound ('a')) '가 맞습니까? –