С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
274 / 175 / 12
Регистрация: 14.03.2010
Сообщений: 501

Ошибка в стандартной библиотеке шланга?

18.06.2013, 01:01. Показов 1917. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Обнаружил интересную вещь: std::sort из стандартной библиотеки компилятора clang сортирует неправильно.
Код, на котором это происходит, прилагается:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
#include <vector>
#include <algorithm>
#include <numeric>
 
void print_vector (const std::vector<int> & vector)
{
    for (int x: vector)
    {
        std::cout << x << ' ';
    }
    std::cout << std::endl;
}
 
int main ()
{
    std::vector<int> v(31);
    std::iota(v.begin(), v.end(), 0);
    print_vector(v);
 
    auto compare = std::less_equal<int>();
 
    std::sort(v.begin(), v.end(), compare);
    print_vector(v);
 
    std::cout << (std::is_sorted(v.begin(), v.end(), compare) ? "sorted" : "unsorted")
              << std::endl;
 
    return 0;
}
Проверял на следующих компиляторах:
Code
1
2
3
Apple LLVM version 4.2 (clang-425.0.28) (based on LLVM 3.2svn)
Target: x86_64-apple-darwin11.4.0
Thread model: posix
Code
1
2
3
clang version 3.2 (tags/RELEASE_32/final)
Target: x86_64-apple-darwin11.4.0
Thread model: posix
При этом в ГЦЦ всё сортируется правильно.

Вопрос:
Это я что-то делаю не так, или у всех такое?
2
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.06.2013, 01:01
Ответы с готовыми решениями:

Directory_iterator отсутствует в стандартной библиотеке
Добрый день. Поясните как такое может быть и как решить проблему? Пробовал запустить код из примера со страницы...

Есть ли критическая секция в стандартной библиотеке?
Здравствуйте! Собственно, сам вопрос. Как использовать критическую секцию в C++? Нашёл информацию о подобном для windows и linux. Есть...

Ищу справочные материалы по стандартной библиотеке
Всем привет, можете пожалуйста подсказать какие есть функции в с++ , которые облегчают код ,наподобие swap, abc

8
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
18.06.2013, 11:52
volovzi, Плюсую.

Bash
1
2
3
4
./new
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 16 15 17 18 19 20 21 22 23 24 25 26 27 28 29 30 
unsorted
Используется libc++3.2
0
274 / 175 / 12
Регистрация: 14.03.2010
Сообщений: 501
18.06.2013, 12:01  [ТС]
Ужос-ужос. Надо заводить баг.
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
20.06.2013, 16:25
volovzi, Почитывал хабр - статья на тему вариадиков, в комментах http://habrahabr.ru/post/183830/ цитируют эту тему. И судя по всему это не является багом.
1
274 / 175 / 12
Регистрация: 14.03.2010
Сообщений: 501
20.06.2013, 16:48  [ТС]
Заглянул в стандарт — действительно, требуется отношение строгого порядка.
Я считаю, что это недоработка.
Я бы сформулировал требование к алгоритму так:
В результате работы алгоритма для любых двух итераторов i, j из сортируемого диапазона таких, что i < j, должно выполняться соотношение compare(*i, *j) == true.

В противном случае это не сортировка, а какая-то непонятная шняга.
0
Эксперт С++
1675 / 1047 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
21.06.2013, 18:37
А ведь элементы-то в массиве все разные. Для них операция <= ничем не отличается от <.
0
274 / 175 / 12
Регистрация: 14.03.2010
Сообщений: 501
21.06.2013, 18:48  [ТС]
@Nick Alte, кстати да, хорошее замечание.
Действительно, логично было бы предположить, что для данного случая все сравнения элементов дадут один и тот же результат и для "<", и для "≤".

Хм.
0
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
21.06.2013, 23:57
В чем смысл сортировать упорядоченный массив?
Как показал отладочный вывод @ForEveR, массив упорядочен, а проблема в
C++
1
2
std::cout << (std::is_sorted(v.begin(), v.end(), compare) ? "sorted" : "unsorted")
              << std::endl;
0
274 / 175 / 12
Регистрация: 14.03.2010
Сообщений: 501
22.06.2013, 00:03  [ТС]
@Dmitriy_M, во-первых, этот пример — для краткости кода. Если элементы в массиве изначально будут в обратном порядке, то результат будет тот же. Во-вторых, каким бы ни был изначальный массив, после сортировки он должен быть упорядочен. В-третьих, прочитай, пожалуйста, внимательно отладочный вывод. Там ... 14 16 15 ...
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.06.2013, 00:03
Помогаю со студенческими работами здесь

Min и max в одной функции: существует ли готовое решение в стандартной библиотеке?
Существует ли в C++ функция, которая бы работала как std::min и std:max одновременно? То есть принимала бы три аргумента - минимальное...

Есть ли в стандартной библиотеке модуль (пакет?) для работы с матрицами?
Пытаюсь найти в стандартной библиотеке модуль (пакет?) для работы с матрицами. Нарыл какой-то Data.Matrix, вписал строку &quot;import...

Задача о переливаниях в 2 ёмкости из шланга
Вот условие задачи: Имеется водопроводный шланг с бесконечным количеством воды и две ёмкости разных неправильных форм, в которые ...

Ошибка в определении стандартной API функции
Переписываю Бота по уроку из Ютьюба. Сейчас первый тест бота. Суть - найти в окне приложения определенный цвет пикселя и поместить туда...

Ошибка в использовании библиотеки/ошибка в библиотеке
Изучаю Java, написал библиотеку для рисования некоторых геометрических фигур (точка, круг, квадрат, прямоугольник, эллипс, треугольник)....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru