[C++ STL] `multiset::erase()`은 중복값을 모두 삭제할 수 있을까?

yeonjuLee·2025년 5월 13일

코딩테스트 대비

목록 보기
31/32

multiset::erase()는 중복값을 모두 지울까?

multiset중복된 값을 허용하는 컨테이너입니다.
하지만 erase()파라미터 타입에 따라 삭제 결과가 달라질 수 있습니다.

multiset::erase(value)

  • 해당 값을 가진 모든 원소를 삭제합니다.
multiset<int> s = {3, 3, 5};
s.erase(3);  // → {5}

multiset::erase(iterator)

  • 지정한 위치의 원소 하나만 삭제합니다.
multiset<int> s = {3, 3, 5};
auto it = s.find(3); // prev(s.end()), --s.end(), s.begin()
s.erase(it);  // → {3, 5}

정리

호출 방식삭제 대상
erase(value)해당 값을 모두 삭제
erase(iterator)해당 위치 1개 삭제

중복값 중 하나만 지우고 싶다면 iterator로!
모두 지우고 싶다면 value로!

0개의 댓글