Пользовательский компаратор для целых чисел в векторе строкиC++

Программы на C++. Форум разработчиков
Anonymous
Пользовательский компаратор для целых чисел в векторе строки

Сообщение Anonymous »

Я хочу отсортировать вектор строк, представляющих очень большие (10**6 цифр) в порядке возрастания в C++.
Я пытаюсь использовать собственный компаратор, но сортировка происходит сбой при сравнении чисел с одинаковым количеством цифр, например. не удалось переставить 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]

Вернуться в «C++»