Namensräume
Varianten
Aktionen

std::inplace_vector<T,N>::resize

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

Ändert die Größe des Containers auf count Elemente; tut nichts, wenn count == size().

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) Werden zusätzliche standardmäßig eingefügte Elemente angehängt.
2) Werden zusätzliche Kopien von value angehängt.

Inhalt

[editieren] Parameter

zählt - neue Größe des Containers
value - der Wert, mit dem die neuen Elemente initialisiert werden sollen
Typanforderungen
-
T muss die Anforderungen von DefaultInsertable erfüllen, um Überladung (1) verwenden zu können.
-
T muss die Anforderungen von CopyInsertable erfüllen, um Überladung (2) verwenden zu können.

[editieren] Komplexität

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

Ausnahmen

1,2) Wirft std::bad_alloc, wenn count > N.

Wenn aus irgendeinem Grund eine Ausnahme ausgelöst wird, haben diese Funktionen keine Auswirkungen (starke Ausnahme-Sicherheitsgarantie).

[editieren] Beispiel

#include <inplace_vector>
#include <print>
 
int main()
{
    std::inplace_vector<int, 6> v(6, 9);
    std::println("Initially, v = {}", v);
 
    v.resize(2);
    std::println("After resize(2), v = {}", v);
 
    v.resize(4);
    std::println("After resize(4), v = {}", v);
 
    v.resize(6, -1);
    std::println("After resize(6, -1), v = {}", v);
 
    try
    {
        std::print("Trying resize(13): ");
        v.resize(13); // throws, because count > N; v is left unchanged
    }
    catch(const std::bad_alloc& ex)
    {
        std::println("ex.what(): {}", ex.what());
    }
    std::println("After exception, v = {}", v);
}

Mögliche Ausgabe

Initially, v = [9, 9, 9, 9, 9, 9]
After resize(2), v = [9, 9]
After resize(4), v = [9, 9, 0, 0]
After resize(6, -1), v = [9, 9, 0, 0, -1, -1]
Trying resize(13): ex.what(): std::bad_alloc
After exception, v = [9, 9, 0, 0, -1, -1]


[editieren] Siehe auch

[static]
Gibt die maximal mögliche Anzahl von Elementen zurück
(public static member function) [edit]
Gibt die Anzahl der Elemente zurück
(public member function) [edit]
[static]
Gibt die Anzahl der Elemente zurück, die im derzeit zugewiesenen Speicher gehalten werden können
(public static member function) [edit]
prüft, ob der Container leer ist
(public member function) [edit]