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>,因为有更好(更安全,更容易推理,有异常的强大)的做事方式。