Spec-Zone.ru › C++

std::multimap<Key,T,Compare,Allocator>::clear

void clear();
(до C++11)
void clear() noexcept;
(с C++11)

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

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

Параметры

(нет)

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

(нет)

Сложность

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

Пример

#include <iostream>
#include <string_view>
#include <map>
 
void print_info(std::string_view rem, const std::multimap<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::multimap<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 224 C++98 сложность была log(size()) + N, но N не была определена исправлено на «линейная по size()»

См. также

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

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

Spec-Zone.ru

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