我想知道可以根据用户需要创建数组。例如
这是可以实现还是我必须创建一个固定数量的数组?
答案 0 :(得分:2)
除了某些编译器(如g ++)为VLA提供扩展名外,您无法在运行时在C ++中创建固定大小的数组。
请改用std::vector
。它根据您的控制而增长,并在需求完成时自动解除分配。
修改:由于提问者无法使用std::vector
,以下是new[]
使用“某些”伪代码的方式:
Coffee **pQuestions = new Coffee* [n]; // n - number of times coffee is asked
for(uint i = 0; i < N; ++i)
{
/* ask for Coffee */
if(/* yes */)
pQuestion[i] = new Coffee[size]; // whatever array size you want
}
根据您的需要,n
和size
是变量(可以是或不可以是常量)
稍后当您完成后,将所有内存解除分配为delete[] pQuestions[i];
和delete[] pQuestions;
。
答案 1 :(得分:0)
您可以使用标准容器类,如std::vector,它可以为您提供某些任意但给定类型的可调整大小的向量。当然,你可以有矢量矢量或队列矢量等。
(您可以使用手动分配的指针和代码,但最好使用STL提供的强大容器)。