我有个问题。如果我读取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
数组
如何写数组可以增加行数
当我原本阵列满
并且数据值在新的更大的数组中是完整的
谢谢
我有个问题。如果我读取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 的固定大小、轻量级的替代方案。”
强调“固定大小”。所以我想,你必须创建一个更大的数组并将条目复制到新数组中。
如果数组的大小发生变化,请不要使用数组。而是使用std::vector
,它可以动态增长。在二维数据结构的情况下,使用向量的向量。在 C++11ish 伪代码中:
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];
}
重新声明具有新大小的数组并复制数据,或使用 std::vector