|
0 / 0 / 0
Регистрация: 29.04.2009
Сообщений: 3
|
|||||||||||||||||
(STL LIST SORT) Сортировка по некольким критериям19.07.2009, 01:48. Показов 3710. Ответов 1
Метки нет (Все метки)
Здравствуйте!
Столкнулся с такой проблемой при сортировке списка. ![]() Есть структура:
1) Имени сцены "SceneAlias" 2) Аттрибутам текстуры TexMipMap;TexGray;TexJpeg; 3) По размерам текстуры TexWidth; TexHeight; ЭТО НЕ ОЗНАЧЕТ СДЕЛАТЬ 3 РАЗНЫХ СОРТИРОВКИ!!! ЭТО ЗНАЧИТ ЧТОБЫ СВЕРХУ ВНИХ ОБЪЕКТЫ БЫЛИ ОТСОРТИРОВАННЫ ПО ДАННЫМ КРИТЕРИЯМ! Т.е. 1) Scene1 JPEG MIPMAP GRAY 1000x900 2) Scene1 JPEG MIPMAP GRAY 800x900 3) Scene1 JPEG MIPMAP 1000x900 4) Scene1 JPEG MIPMAP 700x700 5) Scene1 JPEG GRAY 1500x1500 6) Scene1 JPEG GRAY 700x700 7) Scene1 JPEG 2000x700 8) Scene1 JPEG 1000x700 8) Scene1 100x100 9) Scene1 100x50 10) Scene2 ....... Т.е. номера пунктов 3-ех аттрибутов являются как бы приоритетами (важностью) 1) 2) 3) НО ПРОБЛЕМА НЕ В ТОМ КАК ОТСОРТИРОВАТЬ!!!!!! Проблема заключается в том что функция PREDICATE для списка LIST отказывается сортировать корректно его элементы! Вот один из испробованных мною вариантов PREDICATE функции (до этого я пытался делать эту функцию разными способами в том числе перегрузкой скобок () и перегрузкой знака ">" )
1) Переменные bool sortmem_apartscenes и bool sortmem_apartjpeg являются глобальными. Увы от них избавится не вышло а добавлять еще 3 варианта сортировки было бы некрасиво. Перед сортировкой эти переменные устанавливаются в нужное значение. 2) Переменные TexJpeg TexMipMap и TexGray пробывал сравнивать знаком > но все равно безрезультатно. 3) bool result - это якобы варинт написания функции как в Дельфи. Просто во время отладки я заметил очень странную весчь. Оказывается в PREDICATE функции при к примеру "return true" не происходит выход из функции а продолжает обрабатывать всею последующие команды Я не понимать что это за баг?4) Если проверять по отдельности то разделив на 3-и блока всю функцию сортировки - мы получим что 1-ый блок с сортировкой по алфавиту, не выполняется (хотя список элементов string успешно сортирует имена файлов но только в другом участке в другом контейнере в моей работе) - 2 блок кода выполняется только отдельно к примеру только сортировка по JPEG аттрибуту. - 3 блок сортироки по размерам блестяще выполняется. ПРИТОМ! Если по всем 3 блокам одновременно я пытаюсь сортировать данный список то у меня получается что 1) По именам сцен сортирует но имена сцен и без того изначально были уже в отсортированном виде еще при добавлении в список элементов (отсортировать в обратном порядке при изменении знака > на знак < ничего не меняется но если блок убрать то порядок теряется) 2) Также сортирует по именьшению сверху вниз размеров текстур. Аттрибуты же текстур остаются в произвольном порядке.... ![]() Как это можно вылечить. Может кто уже сталкивался со сложными сортировками? Добавлено через 3 часа 58 минут 39 секунд Вопрос был решен на rsdn.ru Вот Цитата:
0
|
|||||||||||||||||
| 19.07.2009, 01:48 | |
|
Ответы с готовыми решениями:
1
Не работает сортировка Stl sort
Сортировка std::list с функцией sort() |
|
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
||||||
| 20.07.2009, 07:32 | ||||||
|
ну, он предложил сделать многоэтажный if
который будет пропорционален этой конструкции
я писал нечто подобное когда нужно было проводить такие сортировки, у меня была функция сортировки, но она знала откуда и докуда сортировать, а ей передавался указатель на свапер, который знал какие поля менять местами и функция подсчёта полей, которая принимала указатель на функцию для определения одинаковости полей, которая могла посчитать эти границы в итоге там расширение свелось к тому, чтобы продлить цикл сортирования, написать функцию сравнения для определения одинаковости, и функцию перестановки для определённого поля так можно было добавить любое поле ну и переделать, когда бывает нужно переделать, тоже было легко и просто, потому что всё это было собрано по частям, отдельным и самостоятельным Добавлено через 23 минуты 24 секунды а, ну ясно, это я попутал насчёт многоэтажки он юзает короче передачу двух объектов в функцию и сравнения каждого поля, так что насчёт расширяемости у него всё нормально Добавлено через 2 часа 41 минуту 40 секунд короче, суть в том чтобы сортировать колонки постепенно и отсортированное оставлять, а неотсортированное сортировать и функция сортировки свой фокус перемещает за счёт маленьких функций, которые и определяют одна - где начинать сортировку и докуда проводить, а вторая - какие менять элементы, в какой колонке ну, там задача была другая (не было чёткого формата, количество колонок могло меняться, очерёдность тоже - нужно было всё учесть заранее чтобы не переписывать десять раз)
0
|
||||||
| 20.07.2009, 07:32 | |
|
Помогаю со студенческими работами здесь
2
Неправильная сортировка списка list.Sort();
Поиск и сортировка list STL
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
|
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. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|