0
я написал сравнение оператор, как показано ниже:Какое мое настроенное сравнение не работает?
struct GreaterThan
{
bool operator() (string a, string b)
{
if (a.length() == 1 && a[0] == b[0]) //LINE1
{
return true;
}
if (b.length() == 1 && b[0] == a[0]) //LINE2
{
return true;
}
return a.compare(b) == 1 ? true : false;
}
};
vector<string> v{"2", "20", "5", "7"};
sort(v.begin(), v.end(), GreaterThan());
Цель LINE1 и LINE2 должен сделать «2» перед «20» при сортировке. Но это приводит к ошибке выполнения. Ошибка - «неверный оператор <» на визуальной студии.
что бы вы сделали, если "20" и "200" присутствуют? Похоже, вы должны посмотреть на длину строки вместо – dwcanillas
, и ваша ошибка, вероятно, больше того, что вы нам дали. Можете ли вы добавить немного больше выходных данных компилятора? –
Вам необходимо определить [* строгий слабый порядок *) (http://en.cppreference.com/w/cpp/concept/Compare). У вас есть '" 2 ">" 2 "', что делает ваш заказ недействительным. – molbdnilo