C++의 multiset
에서 한개의 원소만 지워봅니다.
multiset
은 중복된 원소를 담을 수 있는 이진트리 자료구조 입니다.
일반적으로 생각하는 방법
multiset.erase(val)
- 이 방법은
val
에 일치하는모든 노드
를 삭제 하게 됩니다. - 이 경우 의도하지 않은 결과를 낳게 됩니다.
실제로 해야하는 방법
iterator
: 반복자를 이용합니다.
- 원하는 원소가 등장하는
iterator
를 찾습니다.md.find(val)
md.lower_bound(val)
- 반복자를 이용해 삭제합니다.
- 물론 찾는것이 없는 경우에 대해서 예외처리가 필요합니다.
코드
1 |
|
결과
1 |
|
Reference
- http://www.cplusplus.com/reference/