@hauptling

Как сортировать вектор строк?

имеется вектор строк, строки - названия файлов с индексом ->

std::vector<std::string> v {"cat.txt", "cat.txt.1", "cat.txt.2", "cat.txt.3", "cat.txt.10", "cat.txt.11"};


Считываю список файлов с помощью

#include <string>
#include <vector>
#include <filesystem>

int main()
{
    std::string path = "/path/";
    std::vector<std::string> v;
    for (const auto & entry : std::filesystem::directory_iterator(path))
    {
        v.push_back(entry.path());
    }
}


Как осуществить сортировку вектора, чтобы был порядок:
cat.txt", "cat.txt.1", "cat.txt.2", "cat.txt.3", "cat.txt.10", "cat.txt.11
а не
cat.txt", "cat.txt.1", "cat.txt.10", "cat.txt.11", "cat.txt.2", "cat.txt.3"
  • Вопрос задан
  • 296 просмотров
Решения вопроса 1
Найди позицию самой правой точки в имени файла. Преобразуй всё, что после неё и до конца имени, в число. (Если не преобразовалось, считаем номер равным нулю.) Создаём вектор пар "имя до точки" - номер. (Для файлов без номера берём имя файла целиком, а не только до точки.) Сортируем вектор пар с кастомным компаратором, который сравнивает сначала имя, потом номер. Можно мне не писать код? :)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы