Russian Qt Forum
Апрель 19, 2024, 03:46 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Подскажите верно я использую лямбду в сортировке  (Прочитано 3060 раз)
Zusykss
Гость
« : Апрель 22, 2017, 21:55 »

Код:
std::sort(m_allStruct.begin(), m_allStruct.end(), [](ResultParsing& a, ResultParsing& b) { return ((a.m_producer == b.m_producer) && (a.m_category == b.m_category)); } );

В excel файле не заметно, что оно отсортировано

использовал .qSort();

но так же сортировки такой как мне нужно не добился, я хочу отсортировать список по двум полям, подскажите что не так
« Последнее редактирование: Апрель 22, 2017, 22:33 от Zusykss » Записан
Johnik
Крякер
****
Offline Offline

Сообщений: 339


Просмотр профиля
« Ответ #1 : Апрель 22, 2017, 22:59 »

Zusykss, попробуйте так:
Код
C++ (Qt)
return (a.m_producer == b.m_producer) ? (a.m_category < b.m_category) : (a.m_producer < b.m_producer);
 
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #2 : Апрель 23, 2017, 09:29 »

Zusykss, попробуйте так:
Код
C++ (Qt)
return (a.m_producer == b.m_producer) ? (a.m_category < b.m_category) : (a.m_producer < b.m_producer);
 
Все верно, но сопля уже длинновата, а для 3 ключей станет нестерпимой. Мне больше нравится "тише едешь - дальше будешь"
Код
C++ (Qt)
bool Less( const data & a, const data & b )
{
// первый ключ
 if (a.key1 < b.key1) return true;
 if (a.key1 > b.key1) return false;
 
// второй ключ
 if (a.key2 < b.key2) return true;
 if (a.key2 > b.key2) return false;
...
// последний просто так
return a.keyLast < b.keyLast;
}
Впрочем это дело вкуса
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.103 секунд. Запросов: 22.