Namespaces
Variants

std::unordered_multimap<Key,T,Hash,KeyEqual,Allocator>:: insert

From cppreference.net
헤더에 정의됨 <unordered_map>
iterator insert ( const value_type & value ) ;
(1) (C++11부터)
iterator insert ( value_type && value ) ;
(2) (C++17부터)
template < class P >
iterator insert ( P && value ) ;
(3) (C++11부터)
iterator insert ( const_iterator hint, const value_type & value ) ;
(4) (C++11부터)
iterator insert ( const_iterator hint, value_type && value ) ;
(5) (C++17부터)
template < class P >
iterator insert ( const_iterator hint, P && value ) ;
(6) (C++11부터)
template < class InputIt >
void insert ( InputIt first, InputIt last ) ;
(7) (C++11부터)
void insert ( std:: initializer_list < value_type > ilist ) ;
(8) (C++11부터)
iterator insert ( node_type && nh ) ;
(9) (C++17부터)
iterator insert ( const_iterator hint, node_type && nh ) ;
(10) (C++17부터)

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

1-3) value 를 삽입합니다.
오버로드 (3) emplace ( std:: forward < P > ( value ) ) 와 동등하며, std:: is_constructible < value_type, P && > :: value == true 인 경우에만 오버로드 해결에 참여합니다.
4-6) value 를 삽입하며, 검색을 시작할 위치에 대한 비구속적 제안으로 hint 를 사용합니다.
오버로드 (6) emplace_hint ( hint, std:: forward < P > ( value ) ) 와 동등하며, std:: is_constructible < value_type, P && > :: value == true 인 경우에만 오버로드 해결에 참여합니다.
7) 범위로부터 요소들을 삽입합니다 [ first , last ) .
만약 [ first , last ) 가 유효한 범위가 아니거나, first 및/또는 last * this 에 대한 반복자인 경우, 동작은 정의되지 않습니다.
8) 초기화자 목록으로부터 요소들을 삽입합니다 ilist .
9) 만약 nh 가 빈 node handle 라면, 아무 작업도 수행하지 않습니다. 그렇지 않으면, nh 가 소유한 요소를 컨테이너에 삽입하고 삽입된 요소를 가리키는 반복자를 반환합니다. nh 가 비어 있지 않고 get_allocator ( ) ! = nh. get_allocator ( ) 인 경우의 동작은 정의되지 않습니다.
10) 만약 nh 가 빈 node handle 이면, 아무 작업도 수행하지 않고 end iterator를 반환합니다. 그렇지 않으면, nh 가 소유한 요소를 컨테이너에 삽입하고, nh. key ( ) 와 동등한 키를 가진 요소를 가리키는 iterator를 반환합니다. hint 는 검색을 시작할 위치에 대한 비구속적 제안으로 사용됩니다. nh 가 비어 있지 않고 get_allocator ( ) ! = nh. get_allocator ( ) 인 경우의 동작은 정의되지 않습니다.

연산 후 새로운 원소의 개수가 기존 max_load_factor() * bucket_count() 보다 크면 재해싱이 발생합니다.
재해싱이 발생하는 경우(삽입으로 인해), 모든 반복자는 무효화됩니다. 재해싱이 발생하지 않는 경우, 반복자는 무효화되지 않습니다. 삽입이 성공한 경우, 노드 핸들에 보관되는 동안 획득한 해당 원소에 대한 포인터와 참조는 무효화되며, 추출되기 전에 해당 원소에 대해 획득한 포인터와 참조는 유효해집니다. (C++17부터)

목차

매개변수

hint - iterator, 콘텐츠 삽입 위치에 대한 제안으로 사용됨
value - 삽입할 요소 값
first, last - 삽입할 요소들의 소스 범위 를 정의하는 iterator 쌍
ilist - 값을 삽입할 initializer list
nh - 호환 가능한 node handle
타입 요구사항
-
InputIt LegacyInputIterator 요구사항을 충족해야 함.

반환값

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

예외

1-6) 어떤 이유로든 예외가 발생하면, 이 함수들은 아무런 효과를 가지지 않습니다 ( strong exception safety guarantee ).
7,8) 예외 안전성 보장이 없습니다.
9,10) 어떤 이유로든 예외가 발생하면, 이 함수들은 아무런 효과도 가지지 않습니다 ( strong exception safety guarantee ).

복잡도

1-6) 평균적인 경우: O(1) , 최악의 경우 O(size()) .
7,8) 평균적인 경우: O(N) , 여기서 N은 삽입할 요소의 개수입니다. 최악의 경우: O(N * size() + N) .
9,10) 평균적인 경우: O(1) , 최악의 경우 O(size()) .

예제

결함 보고서

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

DR 적용 대상 게시된 동작 올바른 동작
LWG 2005 C++11 오버로드 (3,6) P value_type 으로 암시적으로 변환 가능한 경우에만
오버로드 해결에 참여함
value_type P&& 로부터 생성 가능한 경우에만
참여함

참고 항목

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