0

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

  1. 我问用户“你想要咖啡吗” 2.如果用户说是,我创建一个咖啡对象数组。......
  2. 我问用户“你想再喝一杯咖啡吗”?
  3. 如果用户说是,那么我创建另一个咖啡类数组,如果不是,我不创建。

这是可以实现的还是我必须创建固定数量的数组?

4

2 回答 2

2

您不能在 C++ 中在运行时创建固定大小的数组,除非某些编译器(如 g++)为VLA提供扩展。

改为使用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;

于 2012-10-05T04:56:08.837 回答
0

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

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

于 2012-10-05T04:56:20.487 回答