std:: flat_map
|
Definiert im Header
<flat_map>
|
||
|
template
<
class
Key,
|
(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
|
(since C++26) |
Inhaltsverzeichnis |
Iterator-Invalidierung
| Dieser Abschnitt ist unvollständig |
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
|
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
|
(C++23)
|
vergleicht lexikographisch die Werte zweier
flat_map
s
(Funktions-Template) |
|
(C++23)
|
spezialisiert den
std::swap
Algorithmus
(Funktions-Template) |
|
(C++23)
|
löscht alle Elemente, die bestimmte Kriterien erfüllen
(Funktions-Template) |
Hilfsklassen
|
spezialisiert das
std::uses_allocator
Type-Trait
(Klassen-Template-Spezialisierung) |
Tags
|
(C++23)
|
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
|
Dieser Abschnitt ist unvollständig
Grund: Kein Beispiel |
Siehe auch
|
(C++23)
|
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) |
|
|
(C++11)
|
Sammlung von Schlüssel-Wert-Paaren, gehasht nach Schlüsseln, Schlüssel sind eindeutig
(Klassen-Template) |