gpt4 book ai didi

c++ - 为动态分配的数组分配更多内存

转载 作者:太空狗 更新时间:2023-10-29 23:30:10 24 4
gpt4 key购买 nike

我的C++算法获取了未知大小的数据(它一个一个地检测图像上的粒子,我不知道在这个算法完成它的工作之前会检测到多少粒子)。因此,首先我想分配,比如说,包含 10000 个元素的数组,然后在处理过程中,如有必要,多次分配另外 10000 个元素。

这是我试过的,它不起作用:

#include <iostream>
using namespace std;
int main(){
int n = 3;
int m = 3;
float *a = new float[3];
a[0] = 0;
a[1] = 1;
a[2] = 2;
float *b = a + 2;
b = new float[3];
b[0] = 4;
b[1] = 5;
cout << a[3] << endl;
}

结果,我得到了负无穷大。当然,我可以在不同的数组中处理这个,我可以一次分配大量内存。之后我需要将检测到的数据的完整数组传递给函数,因此,我想要一个大数组。

但是,有没有办法增加动态分配方式的大小?我想要在玩具示例中将数组 a 中的元素数量增加 3,因此它将具有 6 元素。

在 Matlab 中这是绝对可能的。 C++ 呢?

谢谢

最佳答案

你应该只使用 std::vector而不是原始数组。它被实现以有效地增长。您可以使用 resize 更改其大小, 追加 push_back或使用 insert 插入一个范围(或其他各种东西)让它成长。

在 C++ 中无法更改手动分配的数组的大小。在原始数组上使用 std::vector 通常是一个好主意,即使大小没有改变。一些论点是自动化的、防泄漏的内存管理、额外的异常安全性以及知道自己大小的 vector

关于c++ - 为动态分配的数组分配更多内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29015546/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com