map_operator_at

map_operator_at (std::map::operator[] — 첨자 연산자로 매핑값 접근)

std::map에서 operator[]를 써서 키에 해당하는 매핑값에 대한 참조를 얻는 멤버 함수예요. 키가 없으면 기본 구성된 매핑값을 삽입해요.

출처: cppreference

본문

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

T& operator[]( const Key& key );            // (1)
T& operator[]( Key&& key );                 // (2) (since C++11)
template< class K >
T& operator[]( K&& x );                     // (3) (since C++26)

key(또는 x)와 동등한 키에 매핑된 값에 대한 참조를 반환해요. 그런 키가 없으면 삽입을 수행해요.

key_type은 CopyConstructible 요구 사항을 만족해야 하고, mapped_type은 CopyConstructible과 DefaultConstructible 요구 사항을 만족해야 해요.

삽입이 수행되면 매핑값은 value-initialized돼요.

반환값

매핑값에 대한 참조. 그 키가 없으면 새로 삽입된 원소의 매핑값에 대한 참조.

복잡도

로그(logarithmic)예요.

참고

operator[]는 키가 없으면 항상 새 원소를 삽입하므로, "찾기만" 하려면 find()를 쓰는 게 좋아요. 조회만 하고 싶을 때 operator[]를 쓰면 원치 않는 원소가 생길 수 있어요.

예제

#include <iostream>
#include <map>
int main()
{
    std::map<int, char> m{{1, 'a'}};
    m[2] = 'b';        // 2가 없어 삽입 후 'b' 대입
    std::cout << m[1] << '\n';   // a
    std::cout << m[2] << '\n';   // b
}

더 알아보기 (Learn more)

cppreference