Я пытаюсь использовать собственный компаратор, но сортировка происходит сбой при сравнении чисел с одинаковым количеством цифр, например. не удалось переставить 82 и 44.
Вот небольшой пример:
Код: Выделить всё
#include
#include
#include
#include
using namespace std;
string ltrim(const string &);
string rtrim(const string &);
bool comp(const string &left, const string &right)
{
if (left.size() < right.size())
{
return true;
}
if (left.size() > right.size())
{
return false;
}
for (unsigned long int i = 0; i < left.size(); i++)
{
if (left[i] > (right[i]))
{
// left is bigger
return false;
}
}
// left is smaller or equal
return true;
}
int main(void)
{
vector str_nums = {"82", "44", "131", "2"};
sort(str_nums.begin(), str_nums.end(), comp);
for (string e : str_nums)
{
cout
Подробнее здесь: [url]https://stackoverflow.com/questions/78667956/custom-comparitor-for-integers-in-string-vector[/url]