この質問の手続き中にstd::vector<T>::clear
、C++ 標準によって課せられた時間の複雑さの要件がないように見えることが明らかになりました。
23.2.3 の表 100 には次のように記載されています。
内のすべての要素を破棄します
a
。の要素を参照するすべての参照、ポインター、およびイテレーターをa
無効にし、末尾イテレーターを無効にする場合があります。投稿:a.empty()
返品true
以上です。特に 23.3.6 の下にそれに関するエントリはなく、以下が に適用されることを明示的にclear
示すものもありません。
[C++11: 23.3.6.1/1]:
ベクターは、ランダム アクセス反復子をサポートするシーケンス コンテナーです。さらに、最後に(償却された)一定時間の挿入および消去操作をサポートします。途中での挿入と消去には線形時間がかかります。ストレージ管理は自動的に処理されますが、効率を改善するためのヒントを与えることができます。[..]
はたして…これは本当なのか?それとも私は単にそれを逃したのですか?