Ну хорошо, пусть надо сортировать "по числу".
Пожалуйста:
C++ (Qt)
lst.sort([](const std::string& str1, const std::string& str2)->bool
{
sregex regex = (s1 = +_d) >> *~_d;
smatch what1, what2;
if (regex_search(str1, what1, regex) && regex_search(str2, what2, regex))
return std::stoi(what1[1]) < std::stoi(what2[1]);
return false;
});
И к чему весь этот огород с regexp? Ведь stoi сводится к strtol который уже делает все что нужно: конвертирует строку в число до того символа когда конверсия невозможна. Можно было просто записать
C++ (Qt)
lst.sort([](const std::string& str1, const std::string& str2)->bool
{
return std::stoi(str1) < std::stoi(str2);
);
Но, видимо, Вам хотелось пустить пыль в глаза "чем-то особенным" (кто такие s1 _d - хз). Ваш код постоянно показывает "широту Ваших познаний" - но далековато от решаемой задачи