Особенности языка mql5, тонкости и приёмы работы - страница 47
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Типа вот этого?
https://www.mql5.com/ru/code/9336
Вопрос был о массиве структур и сортировке по полям структур.
Кто-нибудь делал не затратную по ресурсам сортировку массива структур по любому (не string) заданному полю структуры?
Допустим, есть структура с тремя полями int, datetime и double, и есть массив, заполненный данными, состоящими из этой структуры. В каждой ячейке массива поля структуры заполнены.
Как отсортировать этот массив по любому из этих полей?
Создаёте массив double[][2], заполняете его как { fieldvalue, arrayindex }. Сортируете штатным ArraySort (по первому изменению). Ну и дальше уже расставляете структуры в массиве в соответствии с индексами.
Этот способ хотел как раз обойти. Думал, может есть иные способы.
Почему обойти то? Быстрее ничего не придумать, т.к. сортировку производит нативная функция.
Почему обойти то? Быстрее ничего не придумать, т.к. сортировку производит нативная функция.
Кто-нибудь делал не затратную по ресурсам сортировку массива структур по любому (не string) заданному полю структуры?
Допустим, есть структура с тремя полями int, datetime и double, и есть массив, заполненный данными, состоящими из этой структуры. В каждой ячейке массива поля структуры заполнены.
Как отсортировать этот массив по любому из этих полей?
Привет, если нужна некая универсальная функция сортировки, которая способна сортировать массив сложного типа данных, то это невозможно в принципе.
Если тебе нужна возможность многофакторной сортировки заранее известного типа - то это можно сделать штатными средствами через классы и в частности CArrayObj на это и заточен.
Добавлю, что даже в таких взрослых языках как C# сортировка сложных объектов решается через пользовательские IComparer. Т.е. писать самому критерий сортировки все равно придется.
Этот способ хотел как раз обойти. Думал, может есть иные способы.
Есть, целых два.
Способ номер раз - задание оператора <
Способ номер два функторы.
Способ номер раз:
Способ номер два похож, только оператор совсем внешний и передается в сортировку. Он немного сложнее но намного более универсальный.
Если надо, могу накидать, но только позже.
Сортировка просто копипаст какой-то из кодобазы, если надо быстрее, придется писать свою шуструю, но это один раз написать и больше не париться.Способ номер два похож, только оператор совсем внешний и передается в сортировку. Он немного сложнее но намного более универсальный.
То есть - нужно использовать указатели на функции