Namespaces
Variants

std::multiset<Key,Compare,Allocator>:: insert

From cppreference.net
iterator insert ( const value_type & value ) ;
(1)
iterator insert ( value_type && value ) ;
(2) (C++11 이후)
(3)
iterator insert ( iterator pos, const value_type & value ) ;
(C++11 이전)
iterator insert ( const_iterator pos, const value_type & value ) ;
(C++11 이후)
iterator insert ( const_iterator pos, value_type && value ) ;
(4) (C++11 이후)
template < class InputIt >
void insert ( InputIt first, InputIt last ) ;
(5)
void insert ( std:: initializer_list < value_type > ilist ) ;
(6) (C++11 이후)
iterator insert ( node_type && nh ) ;
(7) (C++17 이후)
iterator insert ( const_iterator pos, node_type && nh ) ;
(8) (C++17 이후)

컨테이너에 요소를 삽입합니다. 남아있는 동등한 요소들의 순서는 유지됩니다.

1,2) value 를 삽입합니다. 컨테이너에 동등한 키를 가진 요소가 있는 경우, 해당 범위의 상한에 삽입합니다.
3,4) value pos 바로 앞 위치에 최대한 가깝게 삽입합니다.
5) [ first , last ) 범위의 요소들을 삽입합니다.
6) 초기화자 목록으로부터 요소들을 삽입합니다 ilist .
7) 만약 nh 가 빈 node handle 이면, 아무 작업도 수행하지 않습니다. 그렇지 않으면, nh 가 소유한 요소를 컨테이너에 삽입하고, 삽입된 요소를 가리키는 반복자를 반환합니다. 만약 컨테이너에 nh. key ( ) 와 동등한 키를 가진 요소들의 범위가 존재하면, 해당 요소는 그 범위의 끝에 삽입됩니다. nh 가 비어 있지 않고 get_allocator ( ) ! = nh. get_allocator ( ) 인 경우의 동작은 정의되지 않습니다.
8) 만약 nh 가 빈 node handle 이면, 아무 작업도 수행하지 않고 end iterator를 반환합니다. 그렇지 않으면, nh 가 소유한 요소를 컨테이너에 삽입하고, nh. key ( ) 와 동등한 키를 가진 요소를 가리키는 iterator를 반환합니다. 요소는 pos 바로 앞 위치에 가능한 한 가깝게 삽입됩니다. nh 가 비어 있지 않고 get_allocator ( ) ! = nh. get_allocator ( ) 인 경우의 동작은 정의되지 않습니다.

반복자나 참조는 무효화되지 않습니다. 삽입이 성공한 경우, 노드 핸들에 보관되는 동안 획득한 해당 요소에 대한 포인터와 참조는 무효화되며, 추출되기 전에 해당 요소에 대해 획득한 포인터와 참조는 유효해집니다. (C++17부터)

목차

매개변수

pos - 새 요소가 삽입될 위치 앞을 가리키는 반복자
value - 삽입할 요소 값
first, last - 삽입할 요소들의 소스 범위 를 정의하는 한 쌍의 반복자
ilist - 값을 삽입할 초기화 리스트
nh - 호환되는 노드 핸들
타입 요구사항
-
InputIt LegacyInputIterator 요구사항을 충족해야 함

반환값

1-4) 삽입된 요소에 대한 반복자.
5,6) (없음)
7,8) nh 가 비어 있었으면 end iterator, 그렇지 않으면 삽입된 요소를 가리키는 iterator.

예외

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

복잡도

1,2,7) O(log(size()))
3,4,8) 삽입이 pos 바로 앞 위치에서 발생하는 경우 분할 상환 상수 시간, O(log(size())) 그 외의 경우.
5,6) O(N·log(size() + N)) , 여기서 N 은 삽입할 원소의 개수입니다.

예제

결함 보고서

다음 동작 변경 결함 보고서는 이전에 발표된 C++ 표준에 소급 적용되었습니다.

DR 적용 대상 게시된 동작 올바른 동작
LWG 233 C++98 pos 는 단순 힌트였으며 완전히 무시될 수 있었음 삽입이 pos 바로 이전 위치에
가능한 한 가깝게
이루어져야 함
LWG 264 C++98 오버로드 (5) 의 복잡도가 범위 [first, last) Compare 에 따라 정렬된 경우
선형이어야 했음
이 특수한 경우에 대한
선형 요구사항 제거
LWG 371 C++98 동등한 요소들의 순서가 보장되지 않았음 순서 유지가 요구됨

참고 항목

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