map_at
map_at (std::map::at — 키로 매핑값 접근)
std::map에서 지정한 키에 해당하는 매핑값에 대한 참조를 반환하는 멤버 함수예요. 키가 없으면 std::out_of_range 예외를 던져요.
출처: cppreference
본문
시그니처는 다음과 같아요.
T& at( const Key& key ); // (1)
const T& at( const Key& key ) const; // (2)
template< class K >
T& at( const K& x ); // (3) (since C++26)
template< class K >
const T& at( const K& x ) const; // (4) (since C++26)
지정한 키를 가진 원소의 매핑값에 대한 참조를 반환해요. 그런 원소가 없으면 std::out_of_range 타입의 예외를 던져요.
(1,2) 키가 key와 동등한 원소를 찾아요.
(3,4) 키가 값 x와 동등(equivalent) 하게 비교되는 원소를 찾아요. 매핑값에 대한 참조는 this->find(x)->second 표현식처럼 얻어요. 이 오버로드는 한정 식별자 Compare::is_transparent가 유효하고 타입을 나타낼 때만 오버로드 해석에 참여해요. Key 인스턴스를 만들지 않고도 이 함수를 호출할 수 있게 해 주는 오버로드예요.
매개변수
key: 찾을 원소의 키x: 키와 투명하게 비교할 수 있는 어떤 타입의 값
반환값
요청한 원소의 매핑값에 대한 참조.
예외
(1,2) 컨테이너에 지정한 key를 가진 원소가 없으면 std::out_of_range.
복잡도
컨테이너 크기에 대해 로그(logarithmic)예요.
예제
#include <iostream>
#include <map>
#include <stdexcept>
int main()
{
std::map<int, char> m{{1, 'a'}, {2, 'b'}};
std::cout << m.at(1) << '\n'; // a
try { m.at(9); }
catch (std::out_of_range&) { std::cout << "out of range\n"; }
}