flat_multimap_erase

flat_multimap_erase (std::flat_multimap::erase — 원소 제거)

std::flat_multimap에서 원하는 원소를 제거하는 멤버 함수예요. 이터레이터로 위치를 지정해 하나를 지우거나, 범위로 여러 개를 지우거나, 키(혹은 투명 비교가 가능한 값)를 기준으로 모두 지울 수 있어요. 남아 있는 동등한 키를 가진 원소들의 순서는 그대로 보존돼요.

출처: 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가 유효하고 타입을 나타내며, iteratorconst_iterator가 모두 K에서 암묵적으로 변환될 수 없을 때만 오버로드 해석에 참여해요. Key 인스턴스를 만들지 않고도 이 함수를 호출할 수 있게 해 주는 오버로드예요.

이터레이터 pos는 유효하고 역참조 가능해야 해요. 그래서 end() 이터레이터(유효하지만 역참조할 수 없음)는 pos 값으로 쓸 수 없어요.

매개변수

  • pos: 제거할 원소를 가리키는 이터레이터
  • first, last: 제거할 원소 범위를 정의하는 이터레이터 쌍
  • key: 제거할 원소들의 키 값
  • x: 키와 투명하게 비교할 수 있는 어떤 타입의 값

반환값

  • (1,2,3) 마지막으로 제거된 원소 다음을 가리키는 이터레이터
  • (4,5) 제거된 원소의 개수

예외

  • (1,2,3) 아무것도 던지지 않아요.
  • (4,5) Compare 객체가 던지는 모든 예외

복잡도

내부 컨테이너에 따라 달라요. 보통 선형(linear)이에요.

더 알아보기 (Learn more)

cppreference