unordered_map_insert

unordered_map_insert (std::unordered_map::insert — 원소 삽입)

std::unordered_map에 원소를 삽입하는 멤버 함수예요. 값/이동 값, 힌트, 범위, 초기화 목록, 노드 핸들 방식이에요. 중복 키는 삽입하지 않아요.

출처: cppreference

본문

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

std::pair<iterator, bool> insert( const value_type& value );   // (1)
template< class P >
std::pair<iterator, bool> insert( P&& value );                 // (2) (since C++11)
std::pair<iterator, bool> insert( value_type&& value );        // (3) (since C++17)
iterator insert( const_iterator pos, const value_type& value );// (4)
template< class P >
iterator insert( const_iterator pos, P&& value );              // (5) (since C++11)
template< class InputIt >
void insert( InputIt first, InputIt last );                    // (6)
void insert( std::initializer_list<value_type> ilist );        // (7) (since C++11)
insert_return_type insert( node_type&& nh );                   // (8) (since C++17)
  • (1,2,3) value를 삽입해요. 이미 같은 키가 있으면 삽입하지 않아요.
  • (4,5) pos를 힌트로 삽입해요.
  • (6) 범위 [first, last)의 원소들을 삽입해요.
  • (7) 초기화 목록 ilist의 원소들을 삽입해요.
  • (8) 노드 핸들 nh에서 노드를 삽입해요.

반환값

  • 단일 원소: {원소 이터레이터, 삽입됐으면 true} 쌍.
  • 힌트: 원소 이터레이터.
  • 범위/초기화 목록: void.
  • 노드 핸들: insert_return_type.

복잡도

평균 상수(amortized constant)예요.

예제

#include <iostream>
#include <unordered_map>
int main()
{
    std::unordered_map<int, char> m;
    auto [it, ok] = m.insert({1, 'a'});
    std::cout << ok << '\n';   // 1
}

더 알아보기 (Learn more)

cppreference