我想初始化一个堆栈上有一百万个对象的数组,我需要在下面的代码中写一百万&i。有没有其他更好的方法。
#include <iostream>
class A{
public:
A(int* p)
: p_(p){
std::cout << "A" << std::endl;
}
private:
int *p_;
};
int main(){
int i;
A a[3] = {&i, &i, &i};
}发布于 2020-07-24 14:40:59
C++新运算符可用于调用预分配内存上的构造函数:
#include <iostream>
#include <cstddef>
#include <cstdint>
class A{
public:
A(int* p)
: p_(p){
std::cout << "A" << std::endl;
}
private:
int *p_;
};
int main(){
int i;
uint8_t buf[1000000 * sizeof(A)];
A* pa = reinterpret_cast<A*>(buf);
for (size_t n = 0; n < 1000000; n++) {
new (&pa[n]) A(&i);
}
return 0;
}https://stackoverflow.com/questions/63068079
复制相似问题