Namensräume
Varianten
Aktionen

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

Von cppreference.com
< cpp‎ | container‎ | vector
 
 
 
 
void clear();
(noexcept seit C++11)
(constexpr seit C++20)

Löscht alle Elemente aus dem Container. Nach diesem Aufruf gibt size() Null zurück.

Macht alle Referenzen, Zeiger und Iteratoren ungültig, die sich auf enthaltene Elemente beziehen. Alle Iteratoren jenseits des Endes werden ebenfalls ungültig.

Lässt die capacity() des Vektors unverändert (Hinweis: Die Einschränkung des Standards hinsichtlich der Änderungen der Kapazität befindet sich in der Spezifikation von reserve(), siehe SO).

Inhalt

[bearbeiten] Komplexität

Linear in Bezug auf die Größe des Containers, d. h. die Anzahl der Elemente.

[bearbeiten] Beispiel

#include <iostream>
#include <string_view>
#include <vector>
 
void print_info(std::string_view rem, const std::vector<int>& v)
{
    std::cout << rem << "{ ";
    for (const auto& value : v)
        std::cout << value << ' ';
    std::cout << "}\n";
    std::cout << "Size=" << v.size() << ", Capacity=" << v.capacity() << '\n';
}
 
int main()
{
    std::vector<int> container{1, 2, 3};
    print_info("Before clear: ", container);
    container.clear();
    print_info("After clear: ", container);
}

Ausgabe

Before clear: { 1 2 3 }
Size=3, Capacity=3
After clear: { }
Size=0, Capacity=3

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 2231 C++11 Die Komplexitätsgarantie wurde in C++11 irrtümlich ausgelassen. Komplexität als linear bestätigt

[bearbeiten] Siehe auch

entfernt Elemente
(public member function) [edit]