我将如何有效地调整使用某些符合标准的 C++ 分配器分配的数组的大小?我知道 C++ 分配器接口中没有提供重新分配的工具,但是 C++11 修订版是否使我们能够更轻松地使用它们?假设我有一个定义vec
了复制赋值运算符的类foo& operator=(const foo& x)
。如果x.size() > this->size()
,我被迫
- 对内部存储中的所有元素调用 allocator.destroy()
foo
。 - 在内部存储上调用 allocator.deallocate()
foo.
- 重新分配一个有足够空间容纳
x.size()
元素的新缓冲区。 - 使用 std::uninitialized_copy 填充存储。
有没有什么方法可以让我更轻松地重新分配内部存储foo
而不必经历所有这些?如果您认为它有用,我可以提供一个实际的代码示例,但我觉得这里没有必要。