std::vectorのclear()は配列数を0に戻すために使うが、メモリを開放してるわけではない。
ポインタと違ってデストラクタが呼ばれると勝手に開放してくれるが、
明示的に開放してほしいならswap技法を使うべし。

clear
  • ソース
vector<double> aaa;
aaa.push_back(2);
aaa.push_back(5);
cout << "size:" << aaa.size() << " value:" << aaa[1] <<endl;
aaa.clear();
cout << "size:" << aaa.size() << " value:" << aaa[1] <<endl;
  • 出力
size:2 value:5
size:0 value:5
swap
  • ソース
vector<double> aaa;
aaa.push_back(2);
aaa.push_back(5);
cout << "size:" << aaa.size() << " value:" << aaa[1] <<endl;
vector<double>().swap(aaa);
cout << "size:" << aaa.size() << " value:" << aaa[1] <<endl;
  • 出力
size:2 value:5
size:0ここでエラー

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

管理人/副管理人のみ編集できます