이것은 이전 질문에 대한 후속 조치입니다 (Complexity of STL max_element).STL 세트에서 최대 요소 지우기
기본적으로 최대 요소를 세트에서 팝하고 싶지만 문제가 있습니다.
set<Object> objectSet;
Object pop_max_element() {
Object obj = *objectSet.rbegin();
set<Object>::iterator i = objectSet.end()--; //this seems terrible
objectSet.erase(i); //*** glibc detected *** free(): invalid pointer
return obj;
}
이전에 내가
objectSet.erase(objectSet.rbegin());
시도했지만 컴파일러가 일치하는 기능을 (필자는 reverse_iterator를 좋아하지 않는다 그것을 추측하고있어)가 없다고 불평 : 여기
대략 내 코드입니다. 빈 세트를 확인하지는 않지만 objectSet.size() >> 0 일 때 실패합니다.
'* objectSet.rbegin();'은 오타입니까? 너 세트를 역 참조하는거야? –
아니요, 참조 해제되는 iterator입니다. 이 점은 별보다 더 강하게 묶입니다. –