我的程序使用ifstream()和getline()将文本文件解析为两个向量深的对象。即矢量内矢量。文本文件加载完成后,内部向量包含超过250000个字符串对象。
这是非常缓慢的。是否存在比使用ifstream()和getline()更有效的STD替代方案?由于
更新:
{{1}}
答案 0 :(得分:0)
您应该减少内存分配。拥有矢量矢量通常不是一个好主意,因为每个内部矢量都有自己的new
和delete
。
您应该reserve()
开始时向量中需要的大致元素数量。
如果您实际上不需要提取fgets()
来完成工作,则应使用std::string
。例如,如果可以从char
数组解析对象,那么就这样做。确保每次都读入相同的字符串缓冲区,而不是创建新的缓冲区。
最重要的是,使用分析器。