std::forward_list<T,Allocator>::assign
Von cppreference.com
< cpp | container | forward list
| void assign( size_type count, const T& value ); |
(1) | (seit C++11) |
| template< class InputIt > void assign( InputIt first, InputIt last ); |
(2) | (seit C++11) |
| void assign( std::initializer_list<T> ilist ); |
(3) | (seit C++11) |
Ersetzt den Inhalt des Containers.
1) Ersetzt den Inhalt durch count Kopien von value value.
2) Ersetzt den Inhalt durch Kopien der Elemente im Bereich
[first, last). Wenn eines der Argumente ein Iterator ist, der auf *this zeigt, ist das Verhalten undefiniert.
|
Diese Überladung hat denselben Effekt wie Überladung (1), wenn |
(bis C++11) |
|
Diese Überladung nimmt nur an der Überladungsauflösung teil, wenn |
(seit C++11) |
3) Ersetzt den Inhalt durch die Elemente aus ilist.
Alle Iteratoren, Zeiger und Referenzen auf die Elemente des Containers werden ungültig.
Inhalt |
[bearbeiten] Parameter
| zählt | - | die neue Größe des Containers |
| value | - | der Wert, mit dem die Elemente des Containers initialisiert werden sollen |
| first, last | - | das Iteratorpaar, das den Quell-Bereich der zu kopierenden Elemente definiert |
| ilist | - | std::initializer_list, aus dem die Werte kopiert werden sollen |
[bearbeiten] Komplexität
1) Linear in count.
2) Linear in der Distanz zwischen first und last.
3) Linear in ilist.size().
[bearbeiten] Beispiel
Der folgende Code verwendet assign, um mehrere Zeichen zu einem std::forward_list<char> hinzuzufügen.
Führen Sie diesen Code aus
#include <forward_list> #include <iostream> #include <string> int main() { std::forward_list<char> characters; auto print_forward_list = [&]() { for (char c : characters) std::cout << c << ' '; std::cout << '\n'; }; characters.assign(5, 'a'); print_forward_list(); const std::string extra(6, 'b'); characters.assign(extra.begin(), extra.end()); print_forward_list(); characters.assign({'C', '+', '+', '1', '1'}); print_forward_list(); }
Ausgabe
a a a a a b b b b b b C + + 1 1
Defect reports
Die folgenden Verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | angewendet auf | Verhalten wie veröffentlicht | Korrigiertes Verhalten |
|---|---|---|---|
| LWG 2209 | C++11 | Die Ersetzungsoperation musste implementiert werden als Löschen aller vorhandenen Elemente, gefolgt vom Einfügen der gegebenen Elemente |
entfernte die Anforderung |
[bearbeiten] Siehe auch
| (C++23) |
weist dem Container einen Bereich von Werten zu (public member function) |
| weist dem Container Werte zu (public member function) |