【发布时间】:2012-07-07 07:09:16
【问题描述】:
我想编写一个 C++ 函数,用目录中所有文件的文件名填充向量。此外,我希望这个向量按文件的最后修改时间排序。
我可以使用 boost::filesystem 读取目录中的所有文件并将其传递给向量,但是这些文件会通过文件名加载到向量中,然后我对文件进行统计并执行排序效率很高。
有人知道快速的方法吗?例如, ls -lhctr 几乎可以立即执行此操作,因此 C++ 对于大型目录也应该能够非常快速地执行此操作。
如果可能的话,我也希望它具有亚毫秒级的分辨率。
【问题讨论】:
-
你提到了
boost::filesystem——打电话给last_write_time有什么问题? -
即使您必须在之后执行排序,我怀疑在除了最庞大的目录之外的所有目录中都需要很长时间。我的第一个建议是,在尝试更复杂的东西之前,您可以使用 Boost 进行尝试,并确保它的速度不足以满足您的目的。你可能会发现这个解决方案已经足够好了。
-
boost版本不够快,对于700个文件的目录,大概需要2秒...
-
@user788171 它显示分析?
-
我没有进行任何分析,我通过在函数调用前后的时间进行简单测试得到了这些数字。