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;
}
Впрочем это дело вкуса