2017-03-01 6 views
0

나는이 일을 시도 std::setstd :: pair 세트에서 멤버를 업데이트하려면 어떻게합니까?</p> <pre><code>std::set< pair<int, int> > mySet; // fill the set with something mySet.find(make_pair(someValueX, someValueY))->first = newX; </code></pre> <p>하지만 컴파일에 다음과 같은 오류가 발생합니다 : :

error: assignment of member 'std::pair<int, int>::first' in read-only object| 
||=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|| 
+1

페어를 제거하고 새 페어를 삽입해야합니다. – user4815162342

+1

이것은'std :: pair'와는 아무런 관련이 없습니다. 이것은'std :: set'에 의해 부과 된 한계입니다. –

답변

5

회원 const 있으며,이를 변경하는 것은 자신의 순서가 잘못 만들 수 있기 때문이다. 쌍을 지우고 변경된 후에 다시 삽입해야합니다.

+0

아, 지금은 이해합니다 ... 이것은 한동안 나를 괴롭 히고 있었고 그것이 왜 효과가 없었는지 전혀 몰랐습니다. 감사! –