在用户需求增加时创建对象数组?

时间:2012-10-05 04:51:15

标签: c++ arrays visual-c++ c++11

我想知道可以根据用户需要创建数组。例如

  1. 我问用户“你想要咖啡吗?” 2.如果用户说是,我创建了一个咖啡对象数组。 .....
  2. 我问用户“你想再喝一杯咖啡吗?”
  3. 如果用户说是,我创建另一个咖啡类数组 如果不是我不创造。
  4. 这是可以实现还是我必须创建一个固定数量的数组?

2 个答案:

答案 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
}

根据您的需要,nsize是变量(可以是或不可以是常量)

稍后当您完成后,将所有内存解除分配为delete[] pQuestions[i];delete[] pQuestions;

答案 1 :(得分:0)

您可以使用标准容器类,如std::vector,它可以为您提供某些任意但给定类型的可调整大小的向量。当然,你可以有矢量矢量或队列矢量等。

(您可以使用手动分配的指针和代码,但最好使用STL提供的强大容器)。