Namespaces
Variants

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

From cppreference.net

void assign ( size_type count, const T & value ) ;
(1) (constexpr seit C++20)
template < class InputIt >
void assign ( InputIt first, InputIt last ) ;
(2) (constexpr seit C++20)
void assign ( std:: initializer_list < T > ilist ) ;
(3) (seit C++11)
(constexpr seit C++20)

Ersetzt den Inhalt des Containers.

1) Ersetzt den Inhalt durch count Kopien des Werts value .
2) Ersetzt den Inhalt durch Kopien aus dem Bereich [ first , last ) .

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

(bis C++11)

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

(seit C++11)
Wenn first oder last ein Iterator in * this ist, ist das Verhalten undefiniert.
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.

Inhaltsverzeichnis

Parameter

count - die neue Größe des Containers
value - der Wert zur Initialisierung der Elemente des Containers
first, last - das Iteratorpaar, das den Quell- Bereich der zu kopierenden Elemente definiert
ilist - std::initializer_list zur Übernahme der Werte

Komplexität

1) Linear in count .
2) Linear im Abstand zwischen first und last .
3) Linear in ilist. size ( ) .

Beispiel

Der folgende Code verwendet assign , um mehrere Zeichen zu einem std:: vector < char > hinzuzufügen:

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

Ausgabe:

a a a a a
b b b b b b
C + + 1 1

Fehlerberichte

Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR Angewendet auf Verhalten wie veröffentlicht Korrektes Verhalten
LWG 2209 C++98 der Ersetzungsvorgang musste implementiert werden als
Löschen aller vorhandenen Elemente gefolgt vom Einfügen der gegebenen Elemente
entfernte die
Anforderung

Siehe auch

weist einen Wertebereich dem Container zu
(öffentliche Elementfunktion)
weist Werte dem Container zu
(öffentliche Elementfunktion)