clear
提供:cppreference.com
Syntax:
#include <vector> void clear();
clear()関数はベクタの全ての要素を削除します。 ベクタの要素がオブジェクトの場合、clear()メソッドはそれぞれの要素に対応する /jp/destructorを呼びます。 しかし、ベクタの要素がオブジェクトへのポインタの場合は、デストラクタを呼びません。 後者の場合、ベクタから完全に削除するには次のようなループ処理をすべきです。
std::vector<SomeObject*> aVector; [...] //The elements of the vector are created with the operand 'new' at some point in the program for(int i=0 ; i<aVector.size() ; i++) delete aVector[i]; aVector.clear();
clearを呼んだ後はベクタの sizeは0になります。 しかし、ベクタの capacityは変化せず、確保したメモリを解放しません。
capacityも同様に全ての要素を空にしたい場合は、次のようなswapを使ったテクニックで可能です。(このテクニックは全ての環境で有効ではありません。例えば、Intel Compiler 10.0.69 and LINUX 2.6.9-89 x64では有効ではないです):
std::vector aVector; [...] aVector.swap( std::vector() );
これは新しい一時的な空のベクトルを生成し、空にしたいベクトルとswapしています。
clear()は 線形時間で動作します。