0

文件流允许我们遍历文件的行。当我们分割线时,例如用逗号或空格,通常的做法是将这个结果向量添加到另一个容器中。

结果可能是一个Vector< Vector<String> >(或您喜欢的容器)。

当我将其赋予 a QTableViewusing aQAbstractTableModel时,行和列是倒置的:外部容器实际上表示行,而内部容器表示列。

我不确定该怎么做,因为我想呈现数据,允许一些编辑操作(编辑模型),然后将其写到一个可比较的文件中。

我的数据将是大约 200,000 行(人)乘 300 列(值),实际上从文件中读取到向量的速度较慢,但​​在我以倒置方式读取矩阵时呈现速度更快。将其写入另一个文件时,与通常的方式相比,这次写出转置向量并不容易:QTableView

for (int iter = 0; ....; ...)
{
    row = matrix[iter].join(" ")
    file.write(row)
}

我错过了一些明显的东西吗?它必须以倒置的方式显示。将模型连接到视图时,我应该转置,还是应该以倒置的方式填充矩阵?

4

1 回答 1

0

您可能需要重新检查您的数据结构。从缓存一致性的角度来看,更好的做法可能是具有以下内容:

struct Line {
    QString str;
    QVector<short> splitPoints; // 2 points per each substring (begin, length)
};

struct File {
    QVector<Line> lines;
}

当然,您需要完整的实现Line,包括便利操作符等,但这给了您一个想法。当从 中返回常量字符串时Line,您希望使用它QStringRef来避免复制内容。

于 2013-09-06T19:34:55.347 回答