我正在运行C++代码,我需要从txt文件导入数据.文本文件包含10,000行.每行包含n列二进制数据.
代码必须循环100,000次,每次必须从txt文件中随机选择一行,并将列中的二进制值分配给某些变量.
编写此代码的最有效方法是什么?我应该先将文件加载到内存中,还是应该随机打开一个随机行号?
如何在C++中实现它?
要随机访问文本文件中的一行,所有行都需要具有相同的字节长度。如果没有,则需要循环直到到达正确的行。由于对于如此多的访问来说,这将非常慢,因此最好将其加载到std::vectorof中std::string,每个条目都是一行(这可以使用 轻松完成std::getline)。或者,由于您想从不同的列分配值,因此您可以将 astd::vector与您自己的结构一起使用,例如
struct MyValues{
double d;
int i;
// whatever you have / need
};
std::vector<MyValues> vec;
Run Code Online (Sandbox Code Playgroud)
这可能比一直解析该行更好。
使用std::vector,您可以获得随机访问,并且只需循环访问整个文件一次。