std::vector<T,Allocator>::clear
void clear(); | (до C++11) | |
void clear() noexcept; | (с C++11) (до C++20) | |
constexpr void clear() noexcept; | (с C++20) |
Удаляет все элементы из контейнера. После этого вызова size() возвращает ноль.
Делает недействительными любые ссылки, указатели или итераторы, ссылающиеся на содержащиеся элементы. Любые итераторы, указывающие за границами контейнера, также становятся недействительными.
Оставляет capacity() вектора неизмененным (Примечание: ограничение стандарта на изменения емкости указано в спецификации vector::reserve, см. [1]).
Параметры
(нет)
Возвращаемое значение
(нет)
Сложность
Линейная относительно размера контейнера, то есть количества элементов.
Пример
#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);
}Вывод:
Before clear: { 1 2 3 }
Size=3, Capacity=3
After clear: { }
Size=0, Capacity=3Отчёты об ошибках
Следующие отчёты об ошибках, изменяющие поведение, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Применяется к | Поведение при публикации | Корректное поведение |
|---|---|---|---|
| LWG 2231 | C++11 | гарантия сложности была ошибочно опущена в C++11 | сложность подтверждена как линейная |
См. также
| удаляет элементы (общедоступная функция-член) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/container/vector/clear