flat_multiset_insert

flat_multiset_insert (std::flat_multiset::insert — 원소 삽입)

std::flat_multiset에 원소를 삽입하는 멤버 함수예요. 값/이동 값, 힌트 위치, 이터레이터 범위, std::sorted_equivalent_t 태그, 초기화 목록 등 다양한 형태로 삽입을 지원해요. 남아 있는 동등한 원소들의 순서는 보존돼요.

출처: cppreference

본문

주요 시그니처는 다음과 같아요 (모두 since C++23).

iterator insert( const value_type& value );           // (1)
iterator insert( value_type&& value );                // (2)
iterator insert( const_iterator pos, const value_type& value );  // (3)
iterator insert( const_iterator pos, value_type&& value );       // (4)
template< class InputIt >
void insert( InputIt first, InputIt last );           // (5)
template< class InputIt >
void insert( std::sorted_equivalent_t, InputIt first, InputIt last ); // (6)
void insert( std::initializer_list<key_type> ilist ); // (7)
void insert( std::sorted_equivalent_t s, std::initializer_list<key_type> ilist ); // (8)
  • (1) value를 삽입해요.
  • (2) value를 이동 삽입해요.
  • (3) pos 바로 앞 위치에 최대한 가깝게 value를 삽입해요 (힌트 삽입).
  • (4) pos 바로 앞에 최대한 가깝게 value를 이동 삽입해요.
  • (5) 범위 [first, last)의 원소들을 삽입해요.
  • (6,8) std::sorted_equivalent_t 태그를 쓰면 입력이 이미 정렬되어 같은 키가 뭉쳐 있다고 가정해요.
  • (7) 초기화 목록 ilist의 원소들을 삽입해요.

멀티셋이라서 이미 같은 키가 있어도 무조건 삽입돼요. 삽입 후 내부 컨테이너는 키 순서로 정렬된 상태를 유지해요.

반환값

단일 원소 오버로드는 삽입된 원소를 가리키는 이터레이터를 반환하고, 범위/초기화 목록 오버로드는 void예요.

복잡도

내부 컨테이너 크기에 선형(linear) 이상. 보통 범위 삽입은 N'(새로 삽입된 개수) + N·log(N + N') 형태예요.

예제

#include <flat_set>
#include <iostream>
int main()
{
    std::flat_multiset<int> s;
    s.insert(3);
    s.insert({1, 2});
    for (int x : s) std::cout << x << ' ';  // 1 2 3
}

더 알아보기 (Learn more)

cppreference