std::set<Key,Compare,Allocator>::clear
void clear(); | (до C++11) | |
void clear() noexcept; | (с C++11) |
Удаляет все элементы из контейнера. После этого вызова size() возвращает ноль.
Любые ссылки, указатели или итераторы, ссылающиеся на содержащиеся элементы, становятся недействительными. Любая итератор, указывающая на конец последовательности, остается действительным.
Параметры
(нет)
Возвращаемое значение
(нет)
Сложность
Линейная относительно размера контейнера, то есть количества элементов.
Пример
#include <iostream>
#include <string_view>
#include <set>
void print_info(std::string_view rem, const std::set<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::set<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 224 | C++98 | сложность была log(size()) + N, но N не было определено | исправлено на «линейная относительно size()» |
См. также
| удаляет элементы (публичный член-функция) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/container/set/clear