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()は 線形時間で動作します。

Related Topics: erase swap

個人用ツール
名前空間
変種
操作
案内
ツールボックス
他の言語