从 std::filesystem::directory_iterator() 获取最后一个文件名而不迭代?

Jai*_*Jai 6 c++ c++17 std-filesystem

我正在尝试获取最后一个文件名。下面的代码非常优雅。但它正在遍历目录中的所有文件。 是否可以在不迭代的情况下获取最后一个文件?

#include <filesystem>
std::string latestFileName;
for (const auto &entry : fs::directory_iterator("/media/jai/Entertainment"))
      latestFileName = entry.path();
std::cout << latestFileName << std::endl;
Run Code Online (Sandbox Code Playgroud)

已编辑:目录中的文件已按字母顺序递增。我想选择最新的文件,它已经确定是按字母顺序排列的最后一个文件。由于可能有数百万个文件,我试图避免迭代。

小智 3

恐怕这是不可能的,但这也不是一个好主意。这是一个坏主意,因为迭代的顺序未指定,并且您无法保证最后一个文件是您想要的文件。这是不可能的,因为std::filesystem::directory_iterator似乎在内部作为单链表实现。

(来自 cppreference.com)迭代顺序未指定,但每个目录条目仅被访问一次。

因此,访问最后一条路径不会获得任何价值。您的用例是什么?肯定有一种不同的方法来完成您想要做的事情。