0

簡単な質問 - おそらくスタイルです。ベクターが不要になったときにベクターをクリア/空にすることが望ましいですか、それとも、コンテナーが不要になったときに STL を使用してクリーンアップすることができますか。

この場合、ポインターや削除が必要なその他のオブジェクトを含まない基本的なベクトルについて話しています。

std::vector<double> myVector;
// use it
// finished with it
// use clear?
myVector.clear();
4

3 に答える 3

5

ストレージを放棄する保証がないため、ベクトルをクリアしてもメリットはありません。を参照してくださいcapacity()

ベクトルが使用するメモリが本当に気になる場合は、ちょっとしたトリックを使用して空のベクトルに置き換えることができます。

std::vector<double>().swap(myVector);

もちろん、最も簡単な方法は、ベクターをスコープ外に放置することです。ベクターは自動的に破棄され、すべてのストレージが解放されます。

于 2012-06-05T03:56:47.057 に答える
3

ベクター オブジェクトが範囲外になると、それに関連付けられているリソースが回復されます。

于 2012-06-05T03:54:32.740 に答える
2

を呼び出す必要はありません。それ自体clearvector処理します。clearそのオブジェクトを再度使用したいが、その内容をすべて削除したい場合にのみ使用してください。

于 2012-06-05T03:54:59.217 に答える