Почему я получаю ошибку
terminate called after throwing an instance of 'std::length_error'
what(): basic_string::_M_create
при использовании этого кода
bool comp(string a,string b){
// if(a==b) return false;
if(a.size()>b.size()) return true;
else if(a.size()<b.size()) return false;
else{
if(a<b) return false;
else return true;
}
}
class Solution {
public:
string kthLargestNumber(vector<string>& nums, int k) {
nth_element(nums.begin(),nums.begin()+k-1,nums.end(),comp);
return nums[k-1];
}
};
тогда как этот код не показывает ошибки
bool comp(string a,string b){
if(a==b) return false;
if(a.size()>b.size()) return true;
else if(a.size()<b.size()) return false;
else{
if(a<b) return false;
else return true;
}
}
class Solution {
public:
string kthLargestNumber(vector<string>& nums, int k) {
nth_element(nums.begin(),nums.begin()+k-1,nums.end(),comp);
return nums[k-1];
}
};
делая leetcode вопрос . Единственная разница между ними в том, что я возвращаю истину / ложь. if a==b
. Эта проблема не возникает, когда я использую std::sort
.