Большинство операционных систем не возвращают записи каталога в каком-либо определенном порядке. Если вы хотите отсортировать их (вам, вероятно, следует, если вы собираетесь показывать результаты пользователю), вам нужно сделать это в отдельном проходе. Один из способов сделать это - вставить записи в std::multimap
, примерно так:
namespace fs = boost::filesystem;
fs::path someDir("/path/to/somewhere");
fs::directory_iterator end_iter;
typedef std::multimap<std::time_t, fs::path> result_set_t;
result_set_t result_set;
if ( fs::exists(someDir) && fs::is_directory(someDir))
{
for( fs::directory_iterator dir_iter(someDir) ; dir_iter != end_iter ; ++dir_iter)
{
if (fs::is_regular_file(dir_iter->status()) )
{
result_set.insert(result_set_t::value_type(fs::last_write_time(dir_iter->path()), *dir_iter));
}
}
}
Затем можно выполнить итерацию по result_set
, и сопоставленные записи boost::filesystem::path
будут в порядке возрастания.