【发布时间】:2013-01-18 10:16:34
【问题描述】:
您可以创建一个包含数组的 C++ 结构:
struct foo{
int bar[42];
};
我想做的是:
struct foo{
std::vector<int> bar(42);
};
当然这不会编译,但你明白了。我知道 .reserve() 之类的,
但我希望在声明foo 时已经分配了空间。
原因是我应该修改一个相当复杂的 Perl 脚本,该脚本在结构中生成带有数组的 C 代码。这些数组应替换为std::vectors。该脚本随后根据 XML 文件初始化数组,我不想在脚本中乱用push_back,因为这些结构是深度嵌套的(数组结构和结构数组)。数组的大小当然会有所不同。
感谢您的建议。
【问题讨论】:
-
如果我理解您的问题,您想用 std::vector 替换数组,但仍希望进行静态内存分配(即在编译时分配资源)。据我所知,std::vector 动态分配资源,这意味着下面使用构造函数的答案将在运行时分配内存。