情况是我有一个项目数组,这些项目里面有一个数组。但是,我想在声明时将数组置于可变长度内,但在编译时可以调整大小。
所以我想要这样的东西:
class2<16>[] = new class2<16>[2048*1024];
或者其他什么。希望你明白了。
显然使其内部有固定阵列很容易,但问题是阵列可能很大,所以我不想让2048 * 1024调用new,所以我绝对不希望class2调用任何新的或者删除方法。
这甚至可能吗?
答案 0 :(得分:5)
您可以为内部数组大小创建模板参数。例如: -
template<int siz>
class Item{
int arr[siz];
};
int main() {
Item<15> items[10];
return 0;
}
答案 1 :(得分:3)
std::tr1::array
(除了C ++ 0x中的标准库)和boost::array
已经存在,采用两个模板参数:项目的类型和数量:
std::tr1::array<int, 16> something;
你可以使用std :: vector容器在运行 -time中拥有任意数量的数组:
std::vector<std::tr1::array<int, 16> > lots_of_arrays(2048*1024);
这里只涉及一个动态分配。