map_insert_range

map_insert_range (std::map::insert_range — 범위 삽입)

std::map에 범위(range)의 원소들을 삽입하는 멤버 함수예요. 중복 키는 무시되고 기존 키가 유지돼요.

출처: cppreference

본문

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

template< container-compatible-range<value_type> R >
void insert_range( R&& rg );   // (since C++23)

범위 rg의 각 원소를 *this에 삽입해요. 각 원소에 대해 rg의 원소가 가진 키와 같은 키가 이미 있으면 그 원소를 삽입하지 않아요. 범위 rg의 각 이터레이터는 정확히 한 번 역참조돼요. rg가 컨테이너와 겹치면 동작이 정의되지 않아요.

매개변수

  • rg: 원소들이 value_type으로 변환 가능한 container compatible range.

복잡도

N·log(size() + N). 여기서 Nranges::distance(rg)예요.

예제

#include <iostream>
#include <map>
#include <utility>
int main()
{
    std::map<int, char> m{{1, 'a'}};
    std::vector<std::pair<int,char>> rg{{2, 'b'}, {1, 'x'}, {3, 'c'}};
    m.insert_range(rg);   // 1은 이미 있어 무시, 2/3 삽입
    for (auto& [k, v] : m) std::cout << k << ':' << v << ' ';  // 1:a 2:b 3:c
}

더 알아보기 (Learn more)

cppreference