Namespaces
Variants

std::flat_multimap<Key,T,Compare,KeyContainer,MappedContainer>:: insert

From cppreference.net
iterator insert ( const value_type & value ) ;
(1) (C++23부터)
iterator insert ( value_type && value ) ;
(2) (C++23부터)
iterator insert ( const_iterator pos, const value_type & value ) ;
(3) (C++23부터)
iterator insert ( const_iterator pos, value_type && value ) ;
(4) (C++23부터)
template < class P >
iterator insert ( P && x ) ;
(5) (C++23부터)
template < class P >
iterator insert ( const_iterator pos, P && x ) ;
(6) (C++23부터)
template < class InputIt >
void insert ( InputIt first, InputIt last ) ;
(7) (C++23부터)
template < class InputIt >
void insert ( std:: sorted_equivalent_t , InputIt first, InputIt last ) ;
(8) (C++23부터)
void insert ( std:: initializer_list < key_type > ilist ) ;
(9) (C++23부터)
void insert ( std:: sorted_equivalent_t s, std:: initializer_list < key_type > ilist ) ;
(10) (C++23부터)

컨테이너에 요소를 삽입합니다.

1) value 를 삽입합니다. return emplace ( value ) ; 와 동일합니다.
2) value 를 삽입합니다. return emplace ( std :: move ( value ) ) ; 와 동등합니다.
3) pos 바로 앞 위치에 최대한 가깝게 value 를 삽입합니다. return emplace_hint ( pos, value ) ; 와 동일합니다.
4) pos 바로 앞 위치에 최대한 가깝게 value 를 삽입합니다. return emplace_hint ( pos, std :: move ( value ) ) ; 와 동일합니다.
5) x * this 에 다음과 같이 삽입합니다: emplace ( std:: forward < P > ( x ) ) ; . 이 오버로드는 std:: is_constructible_v < pair < key_type, mapped_type > , P > true 인 경우에만 오버로드 해결에 참여합니다.
6) x pos 바로 이전 위치에 최대한 가깝게 * this 에 삽입합니다. return emplace_hint ( position, std:: forward < P > ( x ) ) ; 와 동일합니다. 이 오버로드는 std:: is_constructible_v < pair < key_type, mapped_type > , P > true 인 경우에만 오버로드 해결에 참여합니다.
7) 범위 [ first , last ) 의 요소들을 다음과 같은 작업을 순차적으로 수행하는 것처럼 삽입합니다:
  1. 다음 작업처럼 c 에 요소들을 추가합니다:
    for ( ; first ! = last ; ++ first )
    {
    value_type value = * first ;
    c. keys . insert ( c. keys . end ( ) , std :: move ( value. first ) ) ;
    c. values . insert ( c. values . end ( ) , std :: move ( value. second ) ) ;
    }
  2. 새로 삽입된 요소들의 범위를 value_comp 를 기준으로 정렬합니다.
  3. 결과로 생성된 정렬된 범위와 기존 요소들의 정렬된 범위를 단일 정렬된 범위로 병합합니다.
제자리 병합 작업 중 메모리를 할당할 수 있습니다.
8) 범위 [ first , last ) 의 요소들을 다음과 같은 작업을 순차적으로 수행하는 것처럼 삽입합니다:
  1. 다음 작업을 통해 c 에 요소들을 추가합니다:
    for ( ; first ! = last ; ++ first )
    {
    value_type value = * first ;
    c. keys . insert ( c. keys . end ( ) , std :: move ( value. first ) ) ;
    c. values . insert ( c. values . end ( ) , std :: move ( value. second ) ) ;
    }
  2. 새로 추가된 요소들의 정렬된 범위와 기존 요소들의 정렬된 범위를 단일 정렬된 범위로 병합합니다.
제자리 병합 작업 중 메모리를 할당할 수 있습니다.
9) 초기화 목록으로부터 요소들을 삽입합니다 ilist . 다음 코드와 동일합니다 insert ( ilist. begin ( ) , ilist. end ( ) ) ; .
10) 초기화 리스트 ilist 에서 요소들을 삽입합니다. insert ( s, ilist. begin ( ) , ilist. end ( ) ) ; 와 동등합니다.

목차

매개변수

pos - 새 요소가 삽입될 위치 앞을 가리키는 반복자
value - 삽입할 요소 값
first, last - 삽입할 요소들의 소스 범위 를 정의하는 한 쌍의 반복자
ilist - 값을 삽입할 초기화 리스트
x - 키와 투명하게 비교될 수 있는 임의의 타입의 값
s - 입력 시퀀스가 정렬되었음을 나타내는 구분 태그 ( value_comp() 기준)
타입 요구사항
-
InputIt LegacyInputIterator 요구사항을 충족해야 함

반환값

1-6) 삽입된 요소에 대한 반복자.
7-10) (없음)

예외

1-6) 어떤 연산에 의해 예외가 발생하면, 삽입은 아무런 효과를 가지지 않습니다.
7-10) 예외 안전성 보장 없음. (?)

복잡도

1-6) size() 에 대해 선형 시간 복잡도를 가집니다.
7) N + M·log ( M ) , 여기서 N 은 작업 전의 size() 이고 M std:: distance ( first, last ) 입니다.
8) 크기에 대해 선형적으로 size() .
9) N + M·log ( M ) , 여기서 N 은 작업 전의 size() 이고 M ilist. size ( ) 입니다.
10) 선형 복잡도를 가지며, 여기서 N 은 연산 후의 size() 값입니다.

예제

참고 항목

제자리에서 요소를 생성합니다
(public member function)
힌트를 사용하여 제자리에서 요소를 생성합니다
(public member function)
인수에서 유추된 타입의 std::insert_iterator 를 생성합니다
(function template)