创建大小未定义的数组的最佳方法是什么?我需要将数千个度量放在一个数组中。这些值由传感器提供。所以我不能只在最后知道我的数组的大小;当传感器停止发射时。
我正在做这个
#define MAX_SIZE 100000000
double array[MAX_SIZE]
但是,除了具有比MAX_SIZE更多的度量值之外,我还从编译器收到以下错误消息:: R_X86_64_32 反对.bss'
__static_initialization_and_destruction_0':
有没有一种方法可以不特异性或强加指针的初始(静态)大小,而是让它自动增长?
感谢您的帮助。
在您的情况下,最好的选择是使用 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;
}
它是一个动态数组,可在必要时自动扩展。您可以像从数组中一样按索引获取项目,使用迭代器迭代它,清除它或调整大小。
在这里您可以阅读参考资料:http://www.cplusplus.com/reference/array/array/
我认为最好的方法是使用具有初始保留内存的标准容器std::vector
。您还可以使用其成员函数max_size
来确定可以在向量中分配多少个元素。
例如,在线 MS VC++ 编译器显示以下值 536870911:)
#include <iostream>
#include <vector>
int main()
{
std::vector<double> v;
std::cout << " max size = " << v.max_size() << std::endl;
}
Compiled with /EHsc /nologo /W4
main.cpp
Compilation successful!
Total compilation time: 187ms
max size = 536870911
Total execution time: 531ms