Boost :: filesystem, std :: sort: проблема с сохранением информации о проходах сортировки

Я пытаюсь использоватьstd::sort на тип данных, который содержит информацию, прочитанную изboost::filesystem::dictionary_iterator, Похоже, что как алгоритм сортировки сделалn сравнения,n количество файлов в каталоге, эта информация теряется, и я в конечном итоге segfaulting. Valgrind говорит, что я использую неинициализированные значения и делаю недопустимые чтения.

Как я могу изменить свойFile тип данных или алгоритмы, чтобы информация сохранялась между проходами?

#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <boost/filesystem.hpp>
namespace fs = boost::filesystem;

struct File {
    fs::path path;
    fs::file_status status;
};

bool comp(const File& a, const File& b) {
    static size_t count = 0;
    std::cout << "Compare function called " << ++count << " times" << std::endl;
    std::string a_filename = a.path.filename().native();
    std::string b_filename = b.path.filename().native();
    return a_filename.compare(b_filename);
}

int main() {
    std::vector<File> vec;

    // Read directory
    fs::directory_iterator it("/etc"), end;
    for (; it != end; it++) {
        File f = *(new File);
        f.path = it->path();
        f.status = it->status();
        vec.push_back(f);
    }

    std::sort(vec.begin(), vec.end(), comp);

    // Clean up
    for (std::vector<File>::iterator it = vec.begin(); it != vec.end(); it++)
        delete &(*it);

    return 0;
}

(Это не моя настоящая программа, но демонстрирует то же поведение.)

Ответы на вопрос(1)

Ваш ответ на вопрос