Namespaces
Variants

std:: flat_map

From cppreference.net
헤더 파일에 정의됨 <flat_map>
template <

class Key,
class T,
class Compare = std:: less < Key > ,
class KeyContainer = std:: vector < Key > ,
class MappedContainer = std:: vector < T >

> class flat_map ;
(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 객체를 생성하고 사용하는 것이 가능합니다.

그러나 std::flat_map 객체는 일반적으로 constexpr 일 수 없습니다. 동적으로 할당된 저장 공간은 동일한 상수 표현식 평가에서 해제되어야 하기 때문입니다.

(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
{
key_container_type keys ;
mapped_container_type values ;
} ;

멤버 클래스

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)

비멤버 함수

flat_map 의 값을 사전식으로 비교합니다
(함수 템플릿)
std::swap 알고리즘을 특수화합니다
(함수 템플릿)
특정 조건을 만족하는 모든 요소를 삭제합니다
(함수 템플릿)

헬퍼 클래스

std::uses_allocator 타입 특성의 특수화
(클래스 템플릿 특수화)

태그

범위의 요소들이 정렬되어 있고 고유함을 나타냄
(태그)

추론 가이드

참고 사항

멤버 타입 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

예제

참고 항목

두 개의 컨테이너를 적응시켜 키로 정렬된 키-값 쌍의 컬렉션을 제공
(클래스 템플릿)
키로 정렬된 키-값 쌍의 컬렉션, 키는 고유함
(클래스 템플릿)
키로 해시된 키-값 쌍의 컬렉션, 키는 고유함
(클래스 템플릿)