Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Отсортировать вектор структур по одной переменной через qsort - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Написать программу: заменить элемент следующий за максимальным на 0.5 http://www.cyberforum.ru/cpp-beginners/thread1305775.html
Дано действительные числа A1,...,An и B1,...,Bn. В последовательности A1,...,An и в последовательности B1,...,Bn все члены, следующие за членом с наибольшим значением (за первым по порядку если их...
C++ Напишите программу перевода числа из 400 системы счисления в 10 ую с использованием классов! Помогите реализовать! http://www.cyberforum.ru/cpp-beginners/thread1305771.html
C++ Сложение чисел в разных системах счисления (от 2 до 10)
необходимо написать подпрограмму сложения чисел в разных системах счисления я написала,но в результате почему-то всегда выдает 0,помогите разобраться,где ошибка(принцип такой:складываем числ...
Обработка последовательности символов C++
Попытался, но не получилось Может кто подскажет, в чем проблема. #include <stdio.h> #include <conio.h> #include <cstring>
C++ Заменить всех символов в строке http://www.cyberforum.ru/cpp-beginners/thread1305758.html
Доброго времени суток . Пожалуйста, помогите решить - "Заменить все символы с1 в строке s , начиная с позиции n , на строку s2 .
C++ Объясните задание по подстановке строк Даны две строки s и w, вывести строку х максимальной длины, состоящую из букв, таких, что существует перестановка х, являющаяся подстрокой перестановки s и одновременно являющаяся подстрокой... подробнее

Показать сообщение отдельно
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
3876 / 2134 / 548
Регистрация: 18.10.2014
Сообщений: 3,748
20.11.2014, 20:15
Цитата Сообщение от MrGluck Посмотреть сообщение
А есть конкретные примеры где это может быть плохо?
Внешне такой предикат будет "слегка похож" на 'std::greater', т.е. будет намекать на сортировку по убыванию. Но при этом он будет грубо нарушать требования total ordering, т.е. будет страдать от таких очевидных несоответствий, как :

1. 'cmp(a, b) == 0' не эквивалентно 'cmp(b, a) == 0' (т.е. 'a == b' не эквивалентно 'b == a')
2. 'cmp(a, b) > 0' не эквивалентно 'cmp(b, a) < 0' (т.е. 'a > b' не эквивалентно 'b < a')

А дальше - неопределенное поведение. Как оно будет себя проявлять - зависит от реализации, в частности от того, завязывается ли она на симметричность равенства и асимметричность неравенства, определяемых переданным снаружи компаратором. Отдельно реализация может проверять свойства компаратора через assertions, просто ради того, чтобы пользователь не расслаблялся.

Реализация qsort в GCC, похоже, не завязывается на эти симметрии - она исправно сортирует по убыванию и я пока не нашел контрпримера. Реализация же qsort в MSVC практически сразу начинает выдавать ерунду.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru