- unordered_map[meta header]
- std[meta namespace]
- unordered_map[meta class]
- function[meta id-type]
- cpp11[meta cpp]
void clear() noexcept; // (1) C++11
constexpr void clear() noexcept; // (1) C++26コンテナ内のすべての要素を削除する。
なし。
コンテナ内のすべての要素を削除する。
empty() == true
なし。
投げない。
本関数呼び出し前のコンテナの要素数(size())に比例
多くの実装(GCC libstdc++, LLVM libc++ など)は
- 全ての要素を走査して各要素を破棄
- 全てのバケットを走査して各バケットの状態をリセット
という手順を取るため、実際の実行時間はバケット数 bucket_count() について線形となる (size() <= bucket_count() * max_load_factor() = O(bucket_count()) であることに注意)。
規格の計算量の要件は要素数 size() に線形となっているが、規格がコンテナに対して定義する計算量は「コンテナに格納している要素に対する操作の数の計算量」であるためバケットの走査などを考慮していない。
clear()がバケット数(bucket_count())を縮小することを規格は要求していない。 実装によってはclear()後もバケット配列が維持され、動的メモリが残る場合がある。- バケット数を初期状態まで縮小させたいときには
clear()の代わりに以下のように操作するum = std::unordered_map<std::string, int>();
#include <iostream>
#include <unordered_map>
int main()
{
std::unordered_map<std::string, int> um{ {"1st", 1}, {"2nd", 2}, {"3rd", 3}, {"4th", 4}, {"5th", 5}, };
std::cout << std::boolalpha;
std::cout << um.empty() << std::endl;
um.clear();
std::cout << um.empty() << std::endl;
}- clear()[color ff0000]
- um.empty()[link empty.md]
false
true
- C++11
- Clang: 3.1 [mark verified]
- GCC: 4.7.0 [mark verified]
- ICC: ?
- Visual C++: ?
| 名前 | 説明 |
|---|---|
empty |
コンテナが空かどうかを判定 |
emplace |
コンテナ内への要素の直接構築 |
emplace_hint |
挿入位置のヒントを使用したコンテナ内への要素の直接構築 |
insert |
要素の追加 |
erase |
要素の削除 |
swap |
内容の交換 |