代码运行C ++时如何增加指针数组的大小

时间:2018-12-18 13:05:59

标签: c++

假设我这样声明了一个指针数组

Animal** animalsarr = new Animal*[10];

如果在此阵列中,有x个婴儿出生,并且我想在其运行时将其大小调整为新的Animal * [10 + x],我该怎么办?

2 个答案:

答案 0 :(得分:6)

创建C ++是为了简化开发。它有一个非常漂亮的标准库,其中包含名为std::vector的类型,可以完全满足您的需求:

 std::vector<std::unique_ptr<Animal>> v;
 v.push_back(nullptr);
 v.push_back(std::make_unique<Fish>());
 // ...
 std::cout << "Elements in use: " << v.size() << std::endl;

注意:std::vector::resize允许您增大/缩小矢量,但是,我觉得您目前实际上不需要。

答案 1 :(得分:1)

至少有两种方法:

  1. 手动创建新数组(Animal ** animalsarr_2 = new Animal * [10 + x]);,将所有内容从现有动物中移至 animalsarr_2,然后删除animalarr
  2. 使用可以为您完成所有这些工作的容器。例如std :: vector:

std::vector<Animal*> animalsarr; animalsarr.resize(10);

然后在需要时,只需增加向量大小:

animalsarr.resize(10+x);