Я хотел бы «усаживать в соответствие» std::vector
, чтобы уменьшить его объем до его точного размера, чтобы освободить дополнительную память. Стандартный трюк, кажется, один описанный here:Как сжимать-to-fit 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);
}
Всего смысл термоусадочные к приступу, чтобы сэкономить память, но не делает этот метод сначала создать глубокую копию, а затем обменивает экземпляры? Итак, в какой-то момент - когда копия построена - использование памяти удваивается?
Если это так, есть ли более удобный для хранения метод термоусадки? (В моем случае вектор действительно большой, и я не могу позволить себе как оригинал, так и его копию в памяти в любое время.)
Дубликат: http://stackoverflow.com/questions/1111078/reduce-the-capacity-of-an-stl-vector – ergosys
Не совсем, он хочет предотвратить временную копию обоих предметов в памяти при том же когда происходит своп. –
Собственно, об этом и говорит другой вопрос (избегая копии). Спасибо за ссылку. – Frank