Namensräume
Varianten
Aktionen

std::deque<T,Allocator>::assign

Von cppreference.com
< cpp‎ | container‎ | deque
 
 
 
 
void assign( size_type count, const T& value );
(1)
template< class InputIt >
void assign( InputIt first, InputIt last );
(2)
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 [firstlast).
Wenn eines der Argumente ein Iterator ist, der auf *this zeigt, ist das Verhalten undefiniert.

Diese Überladung hat denselben Effekt wie Überladung (1), wenn InputIt ein ganzzahliger Typ ist.

(bis C++11)

Diese Überladung nimmt nur an der Überladungsauflösung teil, wenn InputIt LegacyInputIterator erfüllt.

(seit C++11)
3) Ersetzt den Inhalt durch die Elemente aus ilist.

Alle Iteratoren (einschließlich des end()-Iterators) und alle Referenzen auf die Elemente 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::deque<char> hinzuzufügen

#include <deque>
#include <iostream>
#include <string>
 
int main()
{
    std::deque<char> characters;
 
    auto print_deque = [&]()
    {
        for (char c : characters)
            std::cout << c << ' ';
        std::cout << '\n';
    };
 
    characters.assign(5, 'a');
    print_deque();
 
    const std::string extra(6, 'b');
    characters.assign(extra.begin(), extra.end());
    print_deque();
 
    characters.assign({'C', '+', '+', '1', '1'});
    print_deque();
}

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++98 Die Ersetzungsoperation musste implementiert werden als
Löschen aller vorhandenen Elemente, gefolgt vom Einfügen der gegebenen Elemente
entfernte die
Anforderung

[bearbeiten] Siehe auch

weist dem Container einen Bereich von Werten zu
(public member function) [edit]
weist dem Container Werte zu
(public member function) [edit]