给定一个Foo
类,它具有一些用于初始化值的默认构造函数:
class Foo {
private:
uint32_t x;
public:
constexpr Foo()
: x { 3 }
{}
// ... and some other constructors
};
我需要分配这些
Foo
的数组。我不希望运行数组元素的默认构造函数,因为稍后我还是要显式初始化每个元素。像这样:Foo foos[20000];
for (int i = 0; i < 20000; ++i) {
foos[i] = init(i);
}
鉴于我们不允许将
Foo
的默认构造函数更改为未初始化的数组,有没有一种方法可以获取未初始化的Foo
数组?顺便说一下,这是在D中创建未初始化的数组的方式:
Foo[20000] foos = void;
...这与Rust相同:
let mut foos: [Foo; 20000] = unsafe { std::mem::uninitialized() };
最佳答案
如果使用C++11
,则可以使用std::vector
和emplace_back()
vector<Foo> foos;
for(int i = 0; i < 20000; ++i)
foos.emplace_back( /* arguments here */);