flat_multiset_erase
flat_multiset_erase (std::flat_multiset::erase — 원소 제거)
std::flat_multiset에서 원하는 원소를 제거하는 멤버 함수예요. 위치로 하나를 지우거나, 범위로 지우거나, 키(혹은 투명 비교 가능한 값)를 기준으로 모두 지울 수 있어요. 남아 있는 동등한 원소들의 순서는 보존돼요.
출처: cppreference
본문
시그니처는 다음과 같아요.
iterator erase( iterator position ); // (1) (since C++23)
iterator erase( const_iterator pos ); // (2) (since C++23)
iterator erase( const_iterator first, const_iterator last ); // (3) (since C++23)
size_type erase( const Key& key ); // (4) (since C++23)
template< class K >
size_type erase( K&& x ); // (5) (since C++23)
(1,2) pos 위치의 원소를 제거해요.
(3) [first, last) 범위의 원소를 제거해요. 이 범위는 반드시 *this 안의 유효한 범위여야 해요.
(4) key와 동등한 키를 가진 모든 원소를 제거해요.
(5) x와 동등(equivalent) 하게 비교되는 키를 가진 모든 원소를 제거해요. 이 오버로드는 한정 식별자 Compare::is_transparent가 유효하고 타입을 나타낼 때만 오버로드 해석에 참여해요.
매개변수
pos: 제거할 원소를 가리키는 이터레이터first, last: 제거할 원소 범위를 정의하는 이터레이터 쌍key: 제거할 원소들의 키 값x: 키와 투명하게 비교할 수 있는 어떤 타입의 값
반환값
- (1,2,3) 마지막으로 제거된 원소 다음을 가리키는 이터레이터
- (4,5) 제거된 원소의 개수
복잡도
first, last 사이 거리에 선형(linear)이에요. 키 기반 오버로드(4,5)는 제거되는 원소 개수에 선형이에요.