ivar があるとしvector<type> myVector;
ます。
このベクトルにアイテムを追加します。
後で、ベクターを何も「リセット」して、アイテムを再び新鮮なものに追加したいと思います。
次のことが正しいことを誰でも確認できますか。
myVector.clear(); //removes objects but does not remove memory occupied by prior full size of the vector, even though the vector is now empty with a size of 0
これら 2 つのサイトは互いに完全に矛盾していることに注意してください。この 1 つは、このコンテナーに関連するすべてのイテレーター、ポインター、および参照が無効になっていることを示してclear
います。いずれにせよ、は変更されていないため、実際には が「リセット」されません。capacity
vector
void someFunction(){
vector<type> emptyVector;
myVector.swap(emptyVector);
} // function terminates, thus the prior contents of myVector are deleted when emptyVector goes out of scope
これは最良のアプローチのように思われ、次と同じことを達成すると思います。
myVector.swap(vector<type>());
単純にこれを行うよりも、これがどのように良いか悪いか:
myVector=vector<type>();
これは単にシバン全体を新しい空のベクトルに設定するだけなので、メモリ内の古い場所は自動的に消去されますよね?