如何将数组列表存储到另一组数组中?我试过这种方法,但它不起作用。
float data1[5] = {150.0, 203.0, 165.0, 4.0, 36.0};
float data2[5] = {249.0, 255.0, 253.0, 104.0, 2.0};
float allData[2] = {data1, data2};
cout << allData[1][2] << endl; //this should print 253.0 but it has error
这不允许我编译。我还尝试将其更改为 float *allData[2] = {data1, data2};
它允许我编译但我没有得到我想要的结果。
我做错了什么? 谢谢。
最佳答案
你应该使用 vector (这个例子在 C++11 中):
std::vector<float> data1 = {150.0, 203.0, 165.0, 4.0, 36.0};
std::vector<float> data2 = {249.0, 255.0, 253.0, 104.0, 2.0};
std::vector<std::vector<float>> allData = {data1, data2};
std::cout << allData[0][0] << std::endl;
注意:您可能希望将指向 vector 的指针存储在 allData 中以防止复制数据,但您应该始终注意此类结构,因为这可能很快导致悬空指针。顺便说一下,对于普通数组的解决方案也是如此。
编辑,正如 R. Martinho Fernandes 在评论中提到的那样:
您可以将 allData
的构造更改为:
std::vector<std::vector<float>> allData = {std::move(data1), std::move(data2)};
但值得注意的是,在此操作之后 data1
和 data2
将变为空,因为它们的内容已移至 allData
。如果您不再需要它们,这是首选版本(无指针,无复制)。
关于c++ - 将数组放入另一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7242002/