std::flat_map<Key,T,Compare,KeyContainer,MappedContainer>:: insert
|
std::
pair
<
iterator,
bool
>
insert
(
const
value_type
&
value
)
;
|
(1) | (seit C++23) |
|
std::
pair
<
iterator,
bool
>
insert
(
value_type
&&
value
)
;
|
(2) | (seit C++23) |
|
iterator insert
(
const_iterator pos,
const
value_type
&
value
)
;
|
(3) | (seit C++23) |
|
iterator insert
(
const_iterator pos, value_type
&&
value
)
;
|
(4) | (seit C++23) |
|
template
<
class
P
>
std:: pair < iterator, bool > insert ( P && x ) ; |
(5) | (seit C++23) |
|
template
<
class
P
>
iterator insert ( const_iterator pos, P && x ) ; |
(6) | (seit C++23) |
|
template
<
class
InputIt
>
void insert ( InputIt first, InputIt last ) ; |
(7) | (seit C++23) |
|
template
<
class
InputIt
>
void insert ( std:: sorted_unique_t , InputIt first, InputIt last ) ; |
(8) | (seit C++23) |
|
void
insert
(
std::
initializer_list
<
key_type
>
ilist
)
;
|
(9) | (seit C++23) |
|
void
insert
(
std::
sorted_unique_t
s,
std::
initializer_list
<
key_type
>
ilist
)
;
|
(10) | (seit C++23) |
Fügt Element(e) in den Container ein, falls der Container noch kein Element mit einem äquivalenten Schlüssel enthält.
x
in
*
this
ein, als ob durch
emplace
(
std::
forward
<
P
>
(
x
)
)
;
. Diese Überladung nimmt nur an der Überladungsauflösung teil, wenn
std::
is_constructible_v
<
std::
pair
<
key_type, mapped_type
>
, P
>
true
ist.
x
in
*
this
an einer Position so nah wie möglich vor
pos
ein. Entspricht
return
emplace_hint
(
pos,
std::
forward
<
P
>
(
x
)
)
;
. Diese Überladung nimmt nur an der Überladungsauflösung teil, wenn
std::
is_constructible_v
<
std::
pair
<
key_type, mapped_type
>
, P
>
true
ist.
[
first
,
last
)
ein, als ob die folgenden Operationen sequenziell ausgeführt würden:
-
Fügt Elemente zu
chinzu, als ob durch
for ( ; first ! = last ; ++ first )
{
value_type value = * first ;
c. keys . insert ( c. keys . end ( ) , std :: move ( value. first ) ) ;
c. values . insert ( c. values . end ( ) , std :: move ( value. second ) ) ;
} -
Sortiert den Bereich der neu eingefügten Elemente bezüglich
value_comp. - Führt den resultierenden sortierten Bereich und den sortierten Bereich der vorhandenen Elemente zu einem einzigen sortierten Bereich zusammen.
-
Löscht die doppelten Elemente als ob durch:
auto zv = std :: views:: zip ( c. keys , c. values ) ;
auto it = ranges:: unique ( zv, key_equiv ( compare ) ) . begin ( ) ;
auto dist = std:: distance ( zv. begin ( ) , it ) ;
c. keys . erase ( c. keys . begin ( ) + dist, c. keys . end ( ) ) ;
c. values . erase ( c. values . begin ( ) + dist, c. values . end ( ) ) ;
[
first
,
last
)
ein, als ob die folgenden Operationen sequenziell ausgeführt würden:
-
Fügt Elemente zu
chinzu, als ob durch
for ( ; first ! = last ; ++ first )
{
value_type value = * first ;
c. keys . insert ( c. keys . end ( ) , std :: move ( value. first ) ) ;
c. values . insert ( c. values . end ( ) , std :: move ( value. second ) ) ;
} - Führt den sortierten Bereich der neu hinzugefügten Elemente und den sortierten Bereich der bereits vorhandenen Elemente zu einem einzigen sortierten Bereich zusammen.
-
Löscht die doppelten Elemente als ob durch:
auto zv = std :: views:: zip ( c. keys , c. values ) ;
auto it = ranges:: unique ( zv, key_equiv ( compare ) ) . begin ( ) ;
auto dist = std:: distance ( zv. begin ( ) , it ) ;
c. keys . erase ( c. keys . begin ( ) + dist, c. keys . end ( ) ) ;
c. values . erase ( c. values . begin ( ) + dist, c. values . end ( ) ) ;
| Informationen zur Iterator-Invalidierung sind kopiert von hier |
Inhaltsverzeichnis |
Parameter
| pos | - | ein Iterator auf die Position, vor der das neue Element eingefügt wird |
| value | - | ein einzufügender Elementwert |
| first, last | - | das Iteratorpaar, das den Quell- Bereich der einzufügenden Elemente definiert |
| ilist | - | eine Initialisierungsliste, aus der die Werte eingefügt werden |
| x | - | ein Wert beliebigen Typs, der transparent mit einem Schlüssel verglichen werden kann |
| s | - |
ein Disambiguierungs-Tag, das anzeigt, dass die Eingabesequenz sortiert ist (bezüglich
value_comp()
) und nur eindeutige Elemente enthält
|
| Typanforderungen | ||
-
InputIt
muss die Anforderungen von
LegacyInputIterator
erfüllen.
|
||
Rückgabewert
Exceptions
|
Dieser Abschnitt ist unvollständig
Grund: Fälle 7-10 |
Komplexität
size()
.
N
die
size()
vor dem Vorgang ist und
M
std::
distance
(
first, last
)
ist.
size()
.
Hinweise
Das angehinte Einfügen
(
(
3,4
)
und
(
6
)
)
gibt kein Boolean zurück, um signaturkompatibel mit positionellem Einfügen in sequentiellen Containern wie
std::vector::insert
zu sein. Dies ermöglicht die Erstellung generischer Einfüger wie
std::inserter
. Eine Möglichkeit, den Erfolg eines angehinten Einfügens zu überprüfen, ist der Vergleich von
size()
vorher und nachher.
Beispiel
|
Dieser Abschnitt ist unvollständig
Grund: Kein Beispiel |
Siehe auch
|
Konstruiert Element direkt vor Ort
(öffentliche Elementfunktion) |
|
|
Konstruiert Elemente direkt vor Ort mit Hinweis
(öffentliche Elementfunktion) |
|
|
Fügt ein Element ein oder weist es zu, wenn der Schlüssel bereits existiert
(öffentliche Elementfunktion) |
|
|
Erstellt einen
std::insert_iterator
vom vom Argument abgeleiteten Typ
(Funktionstemplate) |