c++ - 将数组放入另一个数组

标签 c++ arrays

如何将数组列表存储到另一组数组中?我试过这种方法,但它不起作用。

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)};

但值得注意的是,在此操作之后 data1data2 将变为空,因为它们的内容已移至 allData。如果您不再需要它们,这是首选版本(无指针,无复制)。

关于c++ - 将数组放入另一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7242002/

相关文章:

c++ - 一次又一次地获得相同的内存

java - 如何巧妙地创建固定长度的空白字符串?

javascript - 如何在对象的给定键处循环遍历数组?

c++ - Mac OSX 下的 TCHAR 和 _tprintf

c++检测用户是否输入了字符串而不是Int

java - java中动态分配的数组数组

c++ - 当字符串从函数返回时,如果在它之前有和结束行,它会错误地打印输出

c - 程序适用于字符串文字,但不适用于字符串数组

c++ - 从C++ Lambda函数创建MPI约简运算符

c++ - 无法将 ifstream 对象声明为我类(class)的成员