Namespaces
Variants

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

From cppreference.net

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, um count Elemente zu enthalten:

  • Wenn count gleich der aktuellen Größe ist, geschieht nichts.
  • 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 default-inserted Elemente 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 inplace_vector .
2) T ist nicht CopyInsertable in inplace_vector .

Komplexität

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

Ausnahmen

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

Wenn aus irgendeinem Grund eine Exception ausgelöst wird, haben diese Funktionen keine Wirkung ( strong exception safety guarantee ).

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]


Siehe auch

[static]
gibt die maximal mögliche Anzahl von Elementen zurück
(öffentliche statische Elementfunktion)
gibt die Anzahl der Elemente zurück
(öffentliche Elementfunktion)
[static]
gibt die Anzahl der Elemente zurück, die im aktuell allozierten Speicherplatz gehalten werden können
(öffentliche statische Elementfunktion)
prüft, ob der Container leer ist
(öffentliche Elementfunktion)