std::vector
の容量を正確なサイズに縮小して、追加のメモリを解放したいと思います。標準的なトリックは、ここで説明されているもののようです:
template< typename T, class Allocator >
void shrink_capacity(std::vector<T,Allocator>& v)
{
std::vector<T,Allocator>(v.begin(),v.end()).swap(v);
}
縮小縮小の要点はメモリを節約することですが、この方法は最初にディープ コピーを作成してからインスタンスを交換するのではないでしょうか? では、ある時点で (コピーが作成されると)、メモリ使用量が 2 倍になるのでしょうか?
その場合、メモリにやさしいシュリンク トゥ フィットの方法はありますか? (私の場合、ベクトルは非常に大きく、いつでもオリジナルとそのコピーの両方をメモリに保持する余裕はありません。)