二维数组在 c++ 11 中的扩展

Expansion of two-dimensional array in c++ 11

本文关键字:扩展 c++ 二维数组      更新时间:2023-10-16

我有一个问题。如果我读取了 txt 文件如下:

12.5,14.8,17.4

21.6,25.9,32.4

27.8,36.2,45.1

23.8,28.6,40.5

我读取要存储在2 x 3的二维数组中的值

如何使用 C++11 写入

我原本2 x 3二维数组可以增长到4 x 3数组

如何编写数组可以增加行数

当我最初阵列已满时

数据值在新的、更大的数组中是完整的

谢谢

根据 http://www.cplusplus.com/articles/EzywvCM9/

"C++11 提供了 std::array,其目的是取代 C 数组。它是动态大小的 std::vector 的固定大小、轻量级的替代品。

强调"固定大小"。 所以我想,你必须创建一个更大的数组并将条目复制到新数组中。

更多详情请点击此处 http://en.cppreference.com/w/cpp/container/array

使用新大小重新声明数组并复制数据,或使用 std::vector

如果数组的大小发生变化,请不要使用数组。请改用std::vector,它可以动态增长。如果是二维数据结构,请使用向量向量。在 C++11 的伪代码中:

using namespace std;
vector<vector<double> > data;
vector<double> dataLine;
vector<double>* readDataLine(istream file) {
    vector<double>* line = new vector<double>;
    for (each row...) {
         double value;
         file >> value;
         line->append(value);
    }
    return line;
}
void readFile() {
    for (each line...) {
         vector<double>* line = readLine(someFileStream)
         data.append(line);
    }
    // access a single element like in an array:
    double element = data[lineNo][rowNo];
}