std:: flat_map
|
헤더 파일에 정의됨
<flat_map>
|
||
|
template
<
class
Key,
|
(C++23부터) | |
플랫 맵은 고유 키를 가진 키-값 쌍을 포함하는 연관 컨테이너의 기능을 제공하는
컨테이너 어댑터
입니다. 키들은 비교 함수
Compare
를 사용하여 정렬됩니다.
클래스 템플릿
flat_map
은 각각
KeyContainer
와
MappedContainer
타입의 객체로 전달되는 두 개의 기반 컨테이너를 래퍼로 동작합니다. 첫 번째 컨테이너는 정렬되며, 각 키에 해당하는 값은 동일한 인덱스(오프셋)에 위치한 두 번째 컨테이너에 저장됩니다. 두 컨테이너의 요소 수는 동일합니다.
표준 라이브러리가 Compare 요구 사항을 사용하는 모든 곳에서, 유일성은 동등 관계를 사용하여 결정됩니다. 비공식적으로 설명하면, 두 객체 a 와 b 는 어느 한쪽도 다른 쪽보다 작지 않을 경우 동등한 것으로 간주됩니다: ! comp ( a, b ) && ! comp ( b, a ) .
std::flat_map
는
Container
,
ReversibleContainer
,
optional container requirements
의 요구사항과
AssociativeContainer
의 모든 요구사항(로그 시간 검색 복잡도 포함)을 만족합니다. 단, 다음과 같은 예외가 있습니다:
- 노드와 관련된 요구 사항은 적용되지 않으며,
- 반복자 무효화 요구 사항이 다르며,
- 삽입 및 삭제 연산의 복잡도는 선형입니다.
플랫 맵은 고유 키를 사용하는 대부분의 AssociativeContainer 연산을 지원합니다.
std::flat_map
의 모든 멤버 함수는
constexpr
입니다: 상수 표현식 평가에서
std::flat_map
객체를 생성하고 사용하는 것이 가능합니다.
그러나
|
(C++26부터) |
목차 |
반복자 무효화
| 이 섹션은 불완전합니다 |
템플릿 매개변수
| Key | - |
키의 타입.
Key
가
KeyContainer::value_type
과 동일한 타입이 아닌 경우 프로그램은 형식 오류입니다.
|
| T | - |
매핑된 값의 타입.
T
가
MappedContainer::value_type
과 동일한 타입이 아닌 경우 프로그램은 형식 오류입니다.
|
| Compare | - | 엄격한 약순서(strict weak ordering)를 제공하는 Compare 타입. |
|
KeyContainer
MappedContainer |
- |
키와 매핑된 값을 각각 저장하기 위한 기반
SequenceContainer
의 타입. 이러한 컨테이너의 반복자는
LegacyRandomAccessIterator
를 만족하거나
random_access_iterator
를 모델링해야 합니다. 해당 멤버 함수
size
및
max_size
의 호출은 예외를 통해 종료되어서는 안 됩니다.
표준 컨테이너 std::vector 과 std::deque 는 이러한 요구사항을 충족합니다. |
멤버 타입
| 유형 | 정의 |
key_container_type
|
KeyContainer
|
mapped_container_type
|
MappedContainer
|
key_type
|
Key
|
mapped_type
|
T
|
value_type
|
std:: pair < key_type, mapped_type > |
key_compare
|
Compare
|
reference
|
std:: pair < const key_type & , mapped_type & > |
const_reference
|
std:: pair < const key_type & , const mapped_type & > |
size_type
|
std::size_t |
difference_type
|
std::ptrdiff_t |
iterator
|
구현 정의
LegacyInputIterator
,
ConstexprIterator
(C++26부터)
이면서
random_access_iterator
를 만족하는
value_type
에 대한 반복자
|
const_iterator
|
구현 정의
LegacyInputIterator
,
ConstexprIterator
(C++26부터)
이면서
random_access_iterator
를 만족하는
const
value_type
에 대한 반복자
|
reverse_iterator
|
std:: reverse_iterator < iterator > |
const_reverse_iterator
|
std:: reverse_iterator < const_iterator > |
containers
|
기반 컨테이너들을 설명하는 타입
struct
containers
|
멤버 클래스
value_type
타입의 객체를 비교합니다
(클래스) |
멤버 객체
| 멤버 | 설명 |
containers
c
(private)
|
적응된 컨테이너들
( 설명 전용 멤버 객체* ) |
key_compare
compare
(private)
|
비교 함수 객체
( 설명 전용 멤버 객체* ) |
멤버 함수
flat_map
을 생성합니다
(public member function) |
|
|
(destructor)
(implicitly declared)
|
컨테이너 어댑터의 모든 요소를 파괴합니다
(public member function) |
|
컨테이너 어댑터에 값을 할당합니다
(public member function) |
|
요소 접근 |
|
|
범위 검사와 함께 지정된 요소에 접근
(public member function) |
|
|
지정된 요소에 접근하거나 삽입
(public member function) |
|
반복자 |
|
|
시작 부분을 가리키는 반복자를 반환합니다
(public member function) |
|
|
끝을 가리키는 반복자를 반환합니다
(public member function) |
|
|
역방향 반복자를 시작 부분으로 반환합니다
(public member function) |
|
|
역방향 반복자를 끝 위치로 반환합니다
(public member function) |
|
용량 |
|
|
컨테이너 어댑터가 비어 있는지 확인합니다
(public member function) |
|
|
요소의 개수를 반환합니다
(public member function) |
|
|
가능한 최대 요소 수를 반환합니다
(public member function) |
|
수정자 |
|
|
제자리에서 요소를 생성합니다
(public member function) |
|
|
힌트를 사용하여 제자리에서 요소를 생성합니다
(public member function) |
|
|
키가 존재하지 않으면 제자리에서 삽입하고, 키가 존재하면 아무 작업도 수행하지 않음
(public member function) |
|
|
요소를 삽입합니다
(public member function) |
|
|
요소 범위를 삽입합니다
(public member function) |
|
|
키가 이미 존재하는 경우 요소를 삽입하거나 현재 요소에 할당합니다
(public member function) |
|
|
기반 컨테이너를 추출합니다
(public member function) |
|
|
기반 컨테이너들을 교체합니다
(public member function) |
|
|
요소들을 삭제합니다
(public member function) |
|
|
내용을 교환합니다
(public member function) |
|
|
내용을 지웁니다
(public member function) |
|
조회 |
|
|
특정 키를 가진 요소를 찾습니다
(public member function) |
|
|
특정 키와 일치하는 요소의 수를 반환합니다
(public member function) |
|
|
컨테이너에 특정 키를 가진 요소가 포함되어 있는지 확인합니다
(public member function) |
|
|
주어진 키보다
작지 않은
첫 번째 요소에 대한 반복자를 반환합니다
(public member function) |
|
|
주어진 키보다
큰
첫 번째 요소에 대한 반복자를 반환합니다
(public member function) |
|
|
특정 키와 일치하는 요소들의 범위를 반환합니다
(public member function) |
|
관찰자 |
|
|
키를 비교하는 함수를 반환합니다
(public member function) |
|
value_type
타입의 객체에서 키를 비교하는 함수를 반환합니다
(public member function) |
|
|
기본 키 컨테이너에 대한 직접 접근
(public member function) |
|
|
기본 값 컨테이너에 대한 직접 접근
(public member function) |
|
비멤버 함수
|
(C++23)
|
두
flat_map
의 값을 사전식으로 비교합니다
(함수 템플릿) |
|
(C++23)
|
std::swap
알고리즘을 특수화합니다
(함수 템플릿) |
|
(C++23)
|
특정 조건을 만족하는 모든 요소를 삭제합니다
(함수 템플릿) |
헬퍼 클래스
|
std::uses_allocator
타입 특성의 특수화
(클래스 템플릿 특수화) |
태그
|
(C++23)
|
범위의 요소들이 정렬되어 있고 고유함을 나타냄
(태그) |
추론 가이드
참고 사항
멤버 타입
iterator
와
const_iterator
는 동일한 타입의 별칭(alias)일 수 있습니다. 이는 두 타입을 매개변수 타입으로 사용하는 함수 오버로드 쌍을 정의하는 것이
One Definition Rule
을 위반할 수 있음을 의미합니다.
iterator
는
const_iterator
로 변환 가능하므로, 대신
const_iterator
를 매개변수 타입으로 하는 단일 함수를 사용하면 작동합니다.
| 기능 테스트 매크로 | 값 | 표준 | 기능 |
|---|---|---|---|
__cpp_lib_flat_map
|
202207L
|
(C++23) |
std::flat_map
및
std::flat_multimap
|
__cpp_lib_constexpr_flat_map
|
202502L
|
(C++26) |
constexpr
std::flat_map
|
예제
|
이 섹션은 불완전합니다
이유: 예제가 없음 |
참고 항목
|
(C++23)
|
두 개의 컨테이너를 적응시켜 키로 정렬된 키-값 쌍의 컬렉션을 제공
(클래스 템플릿) |
|
키로 정렬된 키-값 쌍의 컬렉션, 키는 고유함
(클래스 템플릿) |
|
|
(C++11)
|
키로 해시된 키-값 쌍의 컬렉션, 키는 고유함
(클래스 템플릿) |