声明struct时的向量分配

A F*_*ich 1 c++ struct vector

您可以在以下内容中创建包含数组的C++结构:

struct foo{
    int bar[42];
};
Run Code Online (Sandbox Code Playgroud)

我想做的是:

struct foo{
    std::vector<int> bar(42);
};
Run Code Online (Sandbox Code Playgroud)

当然这不会编译,但你得到了意图.我知道.reserve()之类的东西,但我希望在声明一个时已经分配了空间foo.

原因是我应该改变一个相当复杂的Perl脚本,该脚本在结构体内生成带有数组的C代码.这些数组应该用std::vectors 代替.该脚本随后根据XML文件初始化数组,我宁愿不在push_back脚本中乱码,因为结构是深层嵌套的(数组的结构和结构数组).阵列的大小当然会有所不同.

谢谢你的建议.

Luc*_*ore 5

使用构造函数:

struct foo{
    std::vector<int> bar;
    foo() : bar(32) {}
};
Run Code Online (Sandbox Code Playgroud)

创建实例时,将自动分配向量的内存.初始化列表在构造函数体执行之前初始化成员.