flat_map::insert_or_assign

flat_map::insert_or_assign (삽입 또는 대입)

키가 없으면 삽입하고, 있으면 값을 대입하는 멤버 함수예요. <flat_map> 헤더, C++23부터.

출처: cppreference

본문

insert_or_assign는 키가 이미 있으면 값을 교체하고, 없으면 새로 삽입해요. operator[]와 달리 임시 기본 생성값을 만들지 않아요.

template< class M >
std::pair<iterator, bool> insert_or_assign( const Key& k, M&& obj );   // (1)
template< class M >
std::pair<iterator, bool> insert_or_assign( Key&& k, M&& obj );        // (2)
  • 반환 값 {iterator, bool}. 삽입 시 bool=true, 대입 시 false.
std::flat_map<std::string, int> m{{"a",1}};
m.insert_or_assign("a", 9);    // 있으므로 대입 → m["a"]==9
m.insert_or_assign("b", 2);    // 없으므로 삽입

"키가 있으면 덮어쓰기"를 안전하고 효율적으로 하는 함수예요. operator[] =가 매핑 타입의 기본 생성자를 요구하는 문제를 피해요.

더 알아보기 (Learn more)

cppreference