multiset_extract

multiset_extract (std::multiset::extract — 노드 추출)

std::multiset에서 노드를 분리해 노드 핸들(node handle)로 반환하는 멤버 함수예요. 노드 핸들은 같은 비교자·할당자를 가진 다른 연관 컨테이너로 이식될 수 있어요.

출처: cppreference

본문

시그니처는 다음과 같아요.

node_type extract( const_iterator position );   // (1) (since C++17)
node_type extract( const Key& k );              // (2) (since C++17)
template< class K >
node_type extract( K&& x );                     // (3) (since C++23)

(1) position이 가리키는 원소를 담고 있는 노드를 연결에서 떼어내고, 그것을 소유하는 node handle을 반환해요.

(2) 컨테이너에 k와 동등한 키를 가진 원소가 있으면 그 중 첫 번째 원소를 담고 있는 노드를 컨테이너에서 떼어내고 node handle을 반환해요. 없으면 빈 node handle을 반환해요.

(3) (2)와 같아요. 이 오버로드는 한정 식별자 Compare::is_transparent가 유효하고 타입을 나타내고, iteratorconst_iterator가 모두 K에서 암묵적으로 변환될 수 없을 때만 오버로드 해석에 참여해요.

매개변수

  • position: 추출할 유효한 이터레이터
  • k: 추출할 원소의 키
  • x: 키와 투명하게 비교할 수 있는 값

반환값

추출된 원소를 소유하는 node handle. 원소가 없으면 빈 node handle.

복잡도

(1) 분할 상환 상수. (2,3) log(size()).

더 알아보기 (Learn more)

cppreference