std::deque<T,Allocator>::clear
void clear(); | (до C++11) | |
void clear() noexcept; | (с C++11) |
Удаляет все элементы из контейнера. После этого вызова size() возвращает ноль.
Любые ссылки, указатели или итераторы, ссылающиеся на содержащиеся элементы, становятся недействительными. Любые итераторы, указывающие на позицию за последним элементом, также становятся недействительными.
Параметры
(нет)
Возвращаемое значение
(нет)
Сложность
Линейная по размеру контейнера, то есть по количеству элементов.
Пример
#include <iostream>
#include <string_view>
#include <deque>
void print_info(std::string_view rem, const std::deque<int>& v)
{
std::cout << rem << "{ ";
for (const auto& value : v)
std::cout << value << ' ';
std::cout << "}\n";
std::cout << "Size=" << v.size() << '\n';
}
int main()
{
std::deque<int> container{1, 2, 3};
print_info("Before clear: ", container);
container.clear();
print_info("After clear: ", container);
}Вывод:
Before clear: { 1 2 3 }
Size=3
After clear: { }
Size=0Отчёты об ошибках
Следующие отчёты об ошибках, изменяющие поведение, были применены ретроактивно к ранее опубликованным стандартам 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/deque/clear