Название: std::vector как отрубить хвосты ? Отправлено: Igors от Сентябрь 09, 2011, 04:13 Добрый день
Хочется использовать std::vector (необходимо приведение к С массиву). Когда данные накапливаются в векторе, он сам распределяет пул/запас, используя больше памяти чем есть элементов. Против этого никто не возражает. Но вот когда данные накоплены, нужно избавиться от этого пула. В Qt такие ф-ции называются squeeze(). Экспериментируем в gcc 4.2 Печать Код
Код
Так как же все-таки избавиться от пула? Спасибо Название: Re: std::vector как отрубить хвосты ? Отправлено: brankovic от Сентябрь 09, 2011, 09:20 ну вы же сами пишите "запас не копируется":
test.swap (test2); test2.clear (); то же, но короче: std::vector <int> (test).swap (test); Название: Re: std::vector как отрубить хвосты ? Отправлено: Пантер от Сентябрь 09, 2011, 09:27 У Страуструпа было это решение.
Название: Re: std::vector как отрубить хвосты ? Отправлено: Igors от Сентябрь 09, 2011, 12:18 ну вы же сами пишите "запас не копируется": Да, видимо это лучшее. Спасибоtest.swap (test2); test2.clear (); то же, но короче: std::vector <int> (test).swap (test); Название: Re: std::vector как отрубить хвосты ? Отправлено: Akon от Сентябрь 10, 2011, 19:06 В новом стандарте есть vector::shrink_to_fit().
http://msdn.microsoft.com/en-us/library/dd647619.aspx (http://msdn.microsoft.com/en-us/library/dd647619.aspx) |