flat_map::try_emplace

flat_map::try_emplace (제자리 삽입 — 키 없을 때만)

평범하게 제자리 삽입하되, 키가 이미 있으면 아무것도 하지 않는 멤버 함수예요. <flat_map> 헤더, C++23부터.

출처: cppreference

본문

try_emplace는 키가 없을 때만 요소를 제자리 생성해 삽입해요. 키가 이미 있으면 아무 일도 하지 않고 기존 요소를 가리키는 반복자를 반환해요.

template< class... Args >
std::pair<iterator, bool> try_emplace( const Key& k, Args&&... args );   // (1)
  • 이동 힌트 버전(2)도 있어요.
  • 반환 값 {iterator, bool}. 삽입 시 bool=true, 기존 키면 false.
std::flat_map<std::string, std::vector<int>> m;
m.try_emplace("a", 1, 2, 3);     // 키 없음 → 삽입, 값 {1,2,3}
auto [it, ok] = m.try_emplace("a", 9);  // 키 있음 → 무시, ok==false

emplace와 달리, 키가 이미 있으면 인자(값 생성에 쓰일 객체)가 전혀 소비되지 않아요. 값 생성 비용이 클 때 키 중복 시 낭비를 막는 데 유용해요.

더 알아보기 (Learn more)

cppreference