Функция сравнения C++ std__sort вызывает переполнение буфера кучиC++

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

Сообщение Anonymous »

Я пишу функцию сравнения для сортировки, например

Код: Выделить всё

bool cmp(int a, int b) {
return a % 2 == 0;
}
Пусть четное число стоит перед нечетным, и вы получите AC в небольшом тестовом примере и переполнение кучи в большом случае.но когда я перейду на

Код: Выделить всё

bool cmp(int a, int b) {
return a % 2 == 0 && b % 2 == 1;
}
Он работает отлично, поэтому мне интересно, чем они отличаются в этой задаче. Эта проблема заключается в leetcode, и ссылка следующая.
https://leetcode.com/problems/sort-arra ... scription/
и это мой полный код этой проблемы

Код: Выделить всё

// bool cmp(int a, int b) {
//     return a % 2 == 0;
// }//wrong method

// bool cmp(int a, int b) {
//     return a % 2 == 0 && b % 2 == 1;
// }//AC method
class Solution {
public:
vector sortArrayByParity(vector& nums) {
sort(nums.begin(),nums.end(),cmp);
return nums;
}
};
Я думаю, что обе функции могут удовлетворить требования вопроса. Я хочу знать, почему такая разница.

Подробнее здесь: https://stackoverflow.com/questions/790 ... r-overflow
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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