给定一个类 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 */);
关于c++ - 创建一个具有默认构造函数的未初始化项目数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29000519/