逐行读取数据文件不自然
Unnatural to read in data files line by line
文件流允许我们遍历文件的行。当我们拆分行时,例如用逗号或空格,通常的事情是将此生成的向量添加到另一个容器中。
结果可能是Vector< Vector<String> >
(或您的容器风格)。
当我使用 QAbstractTableModel
将其提供给QTableView
时,行和列是倒置的:外部容器实际上表示行,而内部容器表示列。
我不确定该怎么做,因为我想呈现数据,允许一些编辑操作(编辑模型),然后将其写出到可比较的文件中。
我的数据将是大约 200,000 行(人)乘以 300 列(值),实际上从文件中读取向量的速度较慢,但当我以倒置方式读取矩阵时,以QTableView
呈现速度更快。当将其写入另一个文件时,与通常的方式相比,这次写出转置向量并不容易,您可以:
for (int iter = 0; ....; ...)
{
row = matrix[iter].join(" ")
file.write(row)
}
我错过了一些明显的东西吗?它必须以倒置的方式显示。将模型连接到视图时,我应该转置,还是应该以倒置的方式填充原始矩阵?
您可能需要重新检查数据结构。从缓存一致性的角度来看,更好的方法可能是具有以下内容:
struct Line {
QString str;
QVector<short> splitPoints; // 2 points per each substring (begin, length)
};
struct File {
QVector<Line> lines;
}
当然,您希望对Line
进行全面的实现,包括便利运算符等,但这给了您一个想法。当从Line
返回常量字符串时,您需要使用QStringRef
以避免复制内容。
相关文章:
- C++驱动程序看不到头文件
- 看不到文件'SDL2.lib'
- Gnuplot_i.hpp C++接口绘制局部变量而不是文件
- CMake 源文件找不到头文件
- 叮叮当当,找不到头文件
- 编译的代码不执行文件写入
- C++程序不制作文件(错误)
- clang 交叉编译命令找不到头文件
- 崇高的林特与叮当在标题中找不到头文件
- C++ ZBar cmake 错误"找不到文件"时包括
- 如何使用Winforms C#或C++.Net在不更改文件中其他内容的情况下修改jpg文件中的Orientation e
- 如何修复使用VScode调试器gcc调试时的"找不到文件"错误
- 代码作为 C 文件工作,但不作为C++文件,错误:'__builtin_types_compatible_p'未在此范围内声明
- 如何在不使用文件扩展名的情况下使用命令行参数打开C++中的文本文件?
- CMake 在源文件附近找不到头文件
- C++找不到文件
- 尝试使用 gradle 构建指向静态库的 c++ 项目链接时找不到头文件
- Windows Subsystem for Linux (WSL) 下的间歇性随机"找不到文件"错误
- Makefile在Linux中工作,但在Windows下不起作用,在子目录中找不到文件
- 逐行读取数据文件不自然