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[] =가 매핑 타입의 기본 생성자를 요구하는 문제를 피해요.