最終更新日時:
が更新

履歴 編集

function
<vector>

std::vector::clear

void clear();

効果

全ての要素を削除する。

また、要素を指す全ての参照、ポインタ、イテレータが無効になる。past-the-end イテレータも無効になることがある。

戻り値

なし

事後条件

empty() == true

計算量

線形時間。全ての要素に対してデストラクタを呼び出す。

#include <iostream>
#include <cassert>
#include <vector>
#include <algorithm>

int main()
{
  std::vector<int> v = {1, 2, 3};

  v.clear();

  assert(v.empty());

  std::for_each(v.begin(), v.end(), [](int x) {
    std::cout << x << std::endl;
  });
}

出力

参照

  • LWG Issue 2231. DR 704 removes complexity guarantee for clear()
    • C++03までこの関数の効果はerase(begin(), end())だったため、それによって線形時間の計算量が保証されていたが、C++11で効果の表記が変わったために、保証がなくなってしまっていた。C++14であらためて保証を追加。