array::operator[]
array::operator[] (인덱스로 원소 접근하기)
지정한 위치의 원소에 대한 참조를 반환하는 첨자 연산자예요. at과 달리 기본적으로 범위 검사를 수행하지 않아요. 상수 시간에 동작해요. C++11부터 있어요.
출처: cppreference
본문
operator[]는 pos 위치의 원소 참조를 돌려줘요.
reference operator[]( size_type pos ); // (1)
const_reference operator[]( size_type pos ) const; // (2)
범위 검사는 하지 않아요. 단, 구현이 하드닝되어 있으면(C++26 이후) 검사가 들어갈 수 있어요.
pos < size()가 거짓이면(C++26 이전) 미정의 동작이에요.- C++26 이후로는 구현이 하드닝되어 있으면 계약 위반이 발생하고, 아니면 여전히 미정의 동작이에요.
정리하면:
- 매개변수
pos: 반환할 원소의 위치예요. - 반환 값: 요청한 원소에 대한 참조예요.
- 복잡도: 상수 시간.
std::map::operator[]와 달리 이 연산자는 절대로 컨테이너에 새 원소를 삽입하지 않아요. 존재하지 않는 원소를 이 연산자로 접근하는 건 미정의 동작이에요(하드닝된 구현은 제외).
접근 위치가 항상 유효하다고 확신할 수 있을 때 성능을 위해 operator[]를 쓰고, 안전성이 필요하면 at을 쓰는 게 일반적이에요. data[n]과 동일한 결과를 내지만 operator[]가 훨씬 더 읽기 편하죠.