Spec-Zone.ru › C++

std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::clear

void clear() noexcept;
(since C++11)

Удаляет все элементы из контейнера. После этого вызова size() возвращает ноль.

Делает недействительными любые ссылки, указатели или итераторы, ссылающиеся на содержащие элементы. Также может сделать недействительными итераторы, указывающие на конец контейнера.

Параметры

(нет)

Возвращаемое значение

(нет)

Сложность

Линейная, пропорциональная размеру контейнера, то есть числу элементов.

Пример

#include <iostream>
#include <string_view>
#include <unordered_map>
 
void print_info(std::string_view rem, const std::unordered_map<int, char>& v)
{
    std::cout << rem << "{ ";
    for (const auto& [key, value] : v)
        std::cout << '[' << key << "]:" << value << ' ';
    std::cout << "}\n";
    std::cout << "Size=" << v.size() << '\n';
}
 
int main()
{
    std::unordered_map<int, char> container{{1, 'x'}, {2, 'y'}, {3, 'z'}};
    print_info("Before clear: ", container);
    container.clear();
    print_info("After clear: ", container);
}

Возможный вывод:

Before clear: { [1]:x [2]:y [3]:z }
Size=3
After clear: { }
Size=0

Отчеты об ошибках

Следующие отчеты об ошибках, изменяющие поведение, были применены ретроактивно к ранее опубликованным стандартам C++.

DR Применено к Поведение, как опубликовано Корректное поведение
LWG 2550 C++11 Для неупорядоченных ассоциативных контейнеров неясно, является ли сложность
линейной относительно количества элементов или корзин
Уточнено, что она линейна относительно количества элементов

См. также

erase
удаляет элементы
(публичный член-функция)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/container/unordered_map/clear

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API