std::vector::reserve
ベクトルに一定量のメモリを予約するために呼び出した場合、このメモリは破棄するまで割り当てられたままになりますか、または予約したメモリを解放vector
するメソッド呼び出し (おそらく ) が存在しますか?clear
編集:コンテナを何度も再利用するため、パフォーマンス上の理由から、メモリ割り当てを避けたいと考えています。このため、事前にメモリを予約しているので、割り当てられたメモリを失うために何もしないことを確認したいと思います。
std::vector::reserve
ベクトルに一定量のメモリを予約するために呼び出した場合、このメモリは破棄するまで割り当てられたままになりますか、または予約したメモリを解放vector
するメソッド呼び出し (おそらく ) が存在しますか?clear
編集:コンテナを何度も再利用するため、パフォーマンス上の理由から、メモリ割り当てを避けたいと考えています。このため、事前にメモリを予約しているので、割り当てられたメモリを失うために何もしないことを確認したいと思います。
編集:コンテナを何度も再利用するため、パフォーマンス上の理由から、メモリ割り当てを避けたいと考えています。このため、事前にメモリを予約しているので、割り当てられたメモリを失うために何もしないことを確認したいと思います。
次の 2 つのことだけを避ける必要があります。
1. Shrink_to_fitですが、これはメモリを解放するための要求にすぎません。ベクトルが実際にこれを行う必要はありません。
2. 空のベクターを使用した場合のみ、確実に容量が変更されます ( ideoneswap
を参照):
vector<int> v;
v.reserve(100);
vector<int>().swap(v);
ASSERT(v.capacity() == 0);
pop_back 、clear 、またはより小さいサイズへのサイズ変更のいずれも、ベクトル容量を削減しません。
ところで、std::array<>の使用を検討してください。