Трюк со свопом - эффективный способ уменьшить емкость объекта,
он заменяет содержимое моего вектора на только что созданный с помощью конструкции копирования:
vector<Person>(persons).swap(persons);
Обратите внимание, что нет никакой гарантии, что people.capacity (); после того, как трюк подкачки равен
размер: емкость вектора (человек) - емкость реализации библиотеки
резервирует к векторам размера people.size ().
C ++ 11 представлен shrink_to_fit () .
shrink_to_fit (), а также трюк подкачки не гарантирует, что размер емкости эффективно
уменьшен до размера вектора.
В любом случае shrink_to_fit () может сделать недействительными ваши итераторы (если происходит перераспределение) или не может:
это зависит от фактической реализации библиотеки.
Имейте в виду, что уловка подкачки требует, чтобы people.size () копировал конструкции Person и
разрушения person.size (). Shrink_to_fit () может избежать всего этого копирования и может
оставьте ваши итераторы действительными. Мог. Но время от времени случается так, что shrink_to_fit () реализуется в
условия подкачки трюк ...