动态(非静态)内存c ++?

Cou*_*ier -2 c++ memory arrays malloc

创建具有未定义大小的数组的最佳方法是什么?我有数千个需要放入数组的措施.这些值由传感器提供.所以我最后才知道阵列的大小; 当传感器停止发射时.

我这样做

#define MAX_SIZE 100000000

double array[MAX_SIZE]
Run Code Online (Sandbox Code Playgroud)

但是,除了有比MAX_SIZE更多的度量之外,我从编译器获取此错误消息:: R_X86_64_32对.bss' __static_initialization_and_destruction_0':

是否有一种不具体的方式或强加指针的初始(静态)大小但让它自动增长?

谢谢你的帮助.

Yel*_*yev 5

在您的情况下,最好的选择是使用STL向量.

#include <iostream>
#include <vector>

using namespace std;

vector<double> v;

int main() {
    v.push_back(3.0); // Add an item
    v.push_back(5.0);
    v.push_back(7.0);
    v.push_back(8.0);

    cout << "v[0]: " << v[0] << endl; // Access an item
    cout << "v[1] + v[2]: " << v[1] + v[2] << endl;

    cout << "Size: " << v.size() << endl; // Size

    v.resize(2); // It will remove items except for the first two

    double sum = 0.0;

    vector<double>::iterator it;
    it = v.begin();
    while (it != v.end())
    {
        sum += *it;
        it++;
    }
    cout << "Sum: " << sum << endl;

    v.resize(0); // It will empty a vector

    cout << "Size: " << v.size() << endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

它是一个动态数组,必要时会自动扩展.您可以通过索引从数组中获取项目,使用迭代器迭代它,清除它或调整大小.

在这里您可以阅读参考资料:http: //www.cplusplus.com/reference/array/array/