Namespaces
Variants

std::list<T,Allocator>:: resize

From cppreference.net

void resize ( size_type count ) ;
(1) (constexpr seit C++26)
void resize ( size_type count, const value_type & value ) ;
(2) (constexpr seit C++26)

Ändert die Größe des Containers, um count Elemente zu enthalten:

  • Wenn count gleich der aktuellen Größe ist, erfolgt keine Aktion.
  • Wenn die aktuelle Größe größer als count ist, wird der Container auf seine ersten count Elemente reduziert.
  • Wenn die aktuelle Größe kleiner als count ist, dann:
1) Zusätzliche Kopien von T ( ) (bis C++11) default-inserted Elemente (seit C++11) werden angehängt.
2) Zusätzliche Kopien von value werden angehängt.

Inhaltsverzeichnis

Parameter

count - neue Größe des Containers
value - der Wert, mit dem die neuen Elemente initialisiert werden
Typanforderungen
-

Wenn die folgende Bedingung erfüllt ist, ist das Verhalten undefiniert:

1) T ist nicht DefaultInsertable in list .
2) T ist nicht CopyInsertable in list .
(seit C++11)

Komplexität

Linear in der Differenz zwischen der aktuellen Größe und count .

Hinweise

Wenn die Wertinitialisierung in Überladung ( 1 ) unerwünscht ist, zum Beispiel wenn die Elemente von Nicht-Klassentyp sind und das Nullsetzen nicht benötigt wird, kann dies durch Bereitstellung eines benutzerdefinierten Allocator::construct vermieden werden.

Beispiel

#include <list>
#include <iostream>
void print(auto rem, const std::list<int>& c)
{
    for (std::cout << rem; const int el : c)
        std::cout << el << ' ';
    std::cout << '\n';
}
int main()
{
    std::list<int> c = {1, 2, 3};
    print("The list holds: ", c);
    c.resize(5);
    print("After resize up to 5: ", c);
    c.resize(2);
    print("After resize down to 2: ", c);
    c.resize(6, 4);
    print("After resize up to 6 (initializer = 4): ", c);
}

Ausgabe:

The list holds: 1 2 3
After resize up to 5: 1 2 3 0 0
After resize down to 2: 1 2
After resize up to 6 (initializer = 4): 1 2 4 4 4 4

Fehlerberichte

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 132 C++98 Random-Access-Iteratoren wurden zur Bestimmung des Löschbereichs verwendet Verwende bidirektionale Iteratoren
LWG 679 C++98 resize() übergab value als Wert Übergibt als const-Referenz
LWG 1420 C++98 Das Verhalten von resize ( size ( ) ) war nicht spezifiziert Spezifiziert

Siehe auch

gibt die maximal mögliche Anzahl von Elementen zurück
(öffentliche Elementfunktion)
gibt die Anzahl der Elemente zurück
(öffentliche Elementfunktion)
prüft, ob der Container leer ist
(öffentliche Elementfunktion)