Как бы я мог эффективно изменять размер массива, выделенного с использованием некоторого стандартизованного С++-распределителя? Я знаю, что никаких средств для перераспределения не предоставляется в интерфейсе alloctor С++, но разрешала ли версия С++ 11 работать с ними более легко? Предположим, что у меня есть класс vec с указанным оператором копирования foo& operator=(const foo& x). Если x.size() > this->size(), я вынужден
- Вызовите allocator.destroy() для всех элементов внутреннего хранилища
foo. - Вызовите allocator.deallocate() во внутреннем хранилище
foo. - Перераспределите новый буфер с достаточным количеством элементов
x.size(). - Для заполнения хранилища используйте std:: uninitialized_copy.
Есть ли способ, что я более легко перераспределяю внутреннее хранилище foo, не пройдя все это? Я мог бы представить пример кода, если вы считаете, что это было бы полезно, но я чувствую, что здесь это было бы необязательно.