Namespaces
Variants

std:: flat_map

From cppreference.net
Definiert im Header <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 ;
(seit C++23)

Die flache Map ist ein Container-Adaptor , der die Funktionalität eines assoziativen Containers bereitstellt, der Schlüssel-Wert-Paare mit eindeutigen Schlüsseln enthält. Schlüssel werden mithilfe der Vergleichsfunktion Compare sortiert.

Die Klassenvorlage flat_map fungiert als Wrapper für die beiden zugrundeliegenden Container, die als Objekte des Typs KeyContainer und MappedContainer übergeben werden. Der erste Container ist sortiert, und für jeden Schlüssel befindet sich sein entsprechender Wert im zweiten Container am selben Index (Offset). Die Anzahl der Elemente in beiden Containern ist identisch.

Überall dort, wo die Standardbibliothek die Compare -Anforderungen verwendet, wird Eindeutigkeit durch die Verwendung der Äquivalenzrelation bestimmt. Informell gesagt werden zwei Objekte a und b als äquivalent betrachtet, wenn keines kleiner als das andere verglichen wird: ! comp ( a, b ) && ! comp ( b, a ) .

std::flat_map erfüllt die Anforderungen von Container , ReversibleContainer , optionalen Container-Anforderungen und alle Anforderungen von AssociativeContainer (einschließlich logarithmischer Suchkomplexität), außer dass:

  • Anforderungen bezüglich Knoten sind nicht anwendbar,
  • Iterator-Invalidierungsanforderungen unterscheiden sich,
  • die Komplexität von Einfüge- und Löschoperationen ist linear.

Ein flacher Map unterstützt die meisten AssociativeContainer -Operationen, die eindeutige Schlüssel verwenden.

Alle Memberfunktionen von std::flat_map sind constexpr : Es ist möglich, std::flat_map -Objekte in der Auswertung eines konstanten Ausdrucks zu erstellen und zu verwenden.

Allerdings können std::flat_map -Objekte im Allgemeinen nicht constexpr sein, da jeder dynamisch allokierte Speicher in derselben Auswertung des konstanten Ausdrucks freigegeben werden muss.

(since C++26)

Inhaltsverzeichnis

Iterator-Invalidierung

Template-Parameter

Key - Der Typ der Schlüssel. Das Programm ist fehlerhaft, wenn Key nicht derselbe Typ wie KeyContainer::value_type ist.
T - Der Typ der zugeordneten Werte. Das Programm ist fehlerhaft, wenn T nicht derselbe Typ wie MappedContainer::value_type ist.
Compare - Ein Compare -Typ, der eine strenge schwache Ordnung bereitstellt.
KeyContainer
MappedContainer
- Die Typen der zugrundeliegenden SequenceContainer zur Speicherung von Schlüsseln und zugeordneten Werten. Die Iteratoren solcher Container sollten LegacyRandomAccessIterator erfüllen oder random_access_iterator modellieren. Aufrufe ihrer Memberfunktionen size und max_size sollten nicht über eine Exception beendet werden.

Die Standardcontainer std::vector und std::deque erfüllen diese Anforderungen.

Mitgliedertypen

Typ Definition
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 implementierungsdefiniert LegacyInputIterator , ConstexprIterator (seit C++26) und random_access_iterator zu value_type
const_iterator implementierungsdefiniert LegacyInputIterator , ConstexprIterator (seit C++26) und random_access_iterator zu const value_type
reverse_iterator std:: reverse_iterator < iterator >
const_reverse_iterator std:: reverse_iterator < const_iterator >
containers Typ, der die zugrundeliegenden Container beschreibt

struct containers
{
key_container_type keys ;
mapped_container_type values ;
} ;

Mitgliedsklassen

vergleicht Objekte vom Typ value_type
(Klasse)

Member-Objekte

Mitglied Beschreibung
containers c (privat) die adaptierten Container
( Nur-Darstellungs-Memberobjekt* )
key_compare compare (privat) das Vergleichsfunktionsobjekt
( Nur-Darstellungs-Memberobjekt* )

Memberfunktionen

konstruiert den flat_map
(öffentliche Member-Funktion)
(destructor)
(implicitly declared)
zerstört jedes Element des Container-Adapters
(public member function)
weist Werte dem Container-Adapter zu
(öffentliche Elementfunktion)
Elementzugriff
Zugriff auf spezifisches Element mit Grenzprüfung
(öffentliche Elementfunktion)
greift auf ein bestimmtes Element zu oder fügt es ein
(öffentliche Elementfunktion)
Iteratoren
gibt einen Iterator auf den Anfang zurück
(öffentliche Elementfunktion)
gibt einen Iterator zum Ende zurück
(öffentliche Member-Funktion)
gibt einen Reverse-Iterator zum Anfang zurück
(public member function)
gibt einen umgekehrten Iterator zum Ende zurück
(öffentliche Elementfunktion)
Kapazität
prüft, ob der Container-Adapter leer ist
(öffentliche Elementfunktion)
gibt die Anzahl der Elemente zurück
(öffentliche Elementfunktion)
gibt die maximal mögliche Anzahl von Elementen zurück
(öffentliche Elementfunktion)
Modifikatoren
Konstruiert Elemente direkt vor Ort
(öffentliche Elementfunktion)
Konstruiert Elemente direkt unter Verwendung eines Hinweises
(öffentliche Elementfunktion)
Fügt ein Element direkt ein, wenn der Schlüssel nicht existiert, tut nichts, wenn der Schlüssel existiert
(öffentliche Elementfunktion)
fügt Elemente ein
(public member function)
fügt eine Reihe von Elementen ein
(öffentliche Elementfunktion)
Fügt ein Element ein oder weist es dem aktuellen Element zu, falls der Schlüssel bereits existiert
(öffentliche Elementfunktion)
extrahiert die zugrunde liegenden Container
(öffentliche Elementfunktion)
ersetzt die zugrunde liegenden Container
(öffentliche Elementfunktion)
löscht Elemente
(öffentliche Elementfunktion)
tauscht die Inhalte aus
(öffentliche Elementfunktion)
löscht den Inhalt
(öffentliche Elementfunktion)
Lookup
findet Element mit spezifischem Schlüssel
(öffentliche Elementfunktion)
gibt die Anzahl der Elemente zurück, die einem bestimmten Schlüssel entsprechen
(öffentliche Elementfunktion)
prüft, ob der Container ein Element mit einem bestimmten Schlüssel enthält
(öffentliche Elementfunktion)
gibt einen Iterator zum ersten Element zurück, das nicht kleiner als der gegebene Schlüssel ist
(öffentliche Elementfunktion)
gibt einen Iterator zum ersten Element zurück, größer als der angegebene Schlüssel
(öffentliche Elementfunktion)
gibt den Bereich der Elemente zurück, die einem bestimmten Schlüssel entsprechen
(öffentliche Elementfunktion)
Beobachter
gibt die Funktion zurück, die Schlüssel vergleicht
(öffentliche Elementfunktion)
gibt die Funktion zurück, die Schlüssel in Objekten vom Typ value_type vergleicht
(öffentliche Elementfunktion)
Direktzugriff auf den zugrundeliegenden Schlüssel-Container
(öffentliche Elementfunktion)
Direktzugriff auf den zugrundeliegenden Werte-Container
(öffentliche Elementfunktion)

Nicht-Member-Funktionen

vergleicht lexikographisch die Werte zweier flat_map s
(Funktions-Template)
spezialisiert den std::swap Algorithmus
(Funktions-Template)
löscht alle Elemente, die bestimmte Kriterien erfüllen
(Funktions-Template)

Hilfsklassen

spezialisiert das std::uses_allocator Type-Trait
(Klassen-Template-Spezialisierung)

Tags

zeigt an, dass Elemente eines Bereichs sortiert und eindeutig sind
(Tag)

Ableitungsleitfäden

Hinweise

Die Member-Typen iterator und const_iterator können Aliase für denselben Typ sein. Dies bedeutet, dass das Definieren eines Paares von Funktionsüberladungen, die die beiden Typen als Parametertypen verwenden, die One Definition Rule verletzen kann. Da iterator in const_iterator konvertierbar ist, wird stattdessen eine einzelne Funktion mit einem const_iterator als Parametertyp funktionieren.

Feature-Test Makro Wert Std Funktion
__cpp_lib_flat_map 202207L (C++23) std::flat_map und std::flat_multimap
__cpp_lib_constexpr_flat_map 202502L (C++26) constexpr std::flat_map

Beispiel

Siehe auch

passt zwei Container an, um eine Sammlung von Schlüssel-Wert-Paaren zu bieten, sortiert nach Schlüsseln
(Klassen-Template)
Sammlung von Schlüssel-Wert-Paaren, sortiert nach Schlüsseln, Schlüssel sind eindeutig
(Klassen-Template)
Sammlung von Schlüssel-Wert-Paaren, gehasht nach Schlüsseln, Schlüssel sind eindeutig
(Klassen-Template)