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