需要在c ++中创建多个动态数组

use*_*256 0 c++ dynamic-arrays

我需要创建一个特定对象的数组,其中我需要的数字依赖于一个单独的变量,解释它的最佳方法是使用psudo代码示例:

int num = 4;
for(int i=0;i<num;i++){
   object_type arrayi [dynamic size];
}
Run Code Online (Sandbox Code Playgroud)

所以我需要4个数组,每个数组都有名称array0,array1,array2和array3,它们都必须是动态数组.无论如何在C++中这样做?

Ben*_*ley 5

std::array<std::vector<object_type>, 4> array;
for (auto & v : array)
    v.resize(dynamic_size);
Run Code Online (Sandbox Code Playgroud)

名字是array[0],array[1]等...代替array1,array2等等......但谁在乎呢?如果你绝对必须拥有这些名字,那么Cassio的回答是你最好的选择.

Pre C++ 11替代方案:

std::vector<object_type> array[4];
for (size_t i=0; i<4; ++i)
    array[i].resize(dynamic_size);
Run Code Online (Sandbox Code Playgroud)

如果你想要一个可变数量的数组,那么你可以使用向量向量,实际上,初始化更容易.它不需要循环,您可以在构造函数中执行它.

std::vector<std::vector<object_type>> array(num, std::vector<object_type>(dynamic_size));
Run Code Online (Sandbox Code Playgroud)

  • 现在C++ 11是否足以在示例中将其用作默认值? (2认同)
  • @GrahamGriffiths:是的,我想是的.那些被限制使用它的人可能是专业程序员,可以弄清楚如何自己调整代码.新程序员没有理由使用旧的编译器.但无论如何我会添加一个替代品. (2认同)