gpt4 book ai didi

c++ - 创建一个具有默认构造函数的未初始化项目数组?

转载 作者:太空狗 更新时间:2023-10-29 20:57:54 25 4
gpt4 key购买 nike

给定一个类 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::vectoremplace_back()

vector<Foo> foos;
for(int i = 0; i < 20000; ++i)
foos.emplace_back( /* arguments here */);

关于c++ - 创建一个具有默认构造函数的未初始化项目数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29000519/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com