C++ 当代码运行c++;

C++ 当代码运行c++;,c++,C++,假设我声明了这样一个指针数组 Animal** animalsarr = new Animal*[10]; 如果在这个数组中诞生了x个婴儿,我想在它运行时将其调整为新的动物*[10+x],我该如何做呢?C++的创建是为了使开发更容易。它有一个非常好的标准库,其中包含一个名为std::vector的类型,它完全满足您的需要: std::vector<std::unique_ptr<Animal>> v; v.push_back(nullptr); v.push_ba

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

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

如果在这个数组中诞生了x个婴儿,我想在它运行时将其调整为新的动物*[10+x],我该如何做呢?

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 v;
v、 向后推(空压);
v、 向后推(std::make_unique());
// ...

std::cout至少有两种方法:

  • 手动创建新阵列(动物**动物阵列2=新 动物*[10+x]);,将现有AnimalSAR中的所有内容移动到 animalsarr_2,然后删除animalsarr
  • 使用能为你做所有这些事情的容器。例如std::vector:
  • std::vector animalsarr;
    动物arr.resize(10)

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

    animalsarr.resize(10+x);
    

    你不能使用
    std::vector
    而不是
    std::vector
    或者你真的有理由使用指针吗?我肯定比以往任何时候都更愿意添加更多的星星。你能教我吗?你不应该,不,我不能教你,我已经被一颗星星弄晕了:你可以这样做:
    Animal**temp=new Animal*[10+x]然后将
    animalsarr
    复制到
    temp
    ,然后
    删除[]animalsarr然后
    animalsarr=temp。但这不是一个好的C++方式,一般来说,你不应该做<代码>免费/Malc < /C>或<代码> NeX/DELATE < /COD>或<代码> NeX[]/DELL[]/COD>,因为有更好(更安全,更容易推理,有异常的强大)的做事方式。