Да, неплохая идея сортировать интерефейсы. Это уменишит количество базовых классов в факториал раз. Но всё же мне кажется этот метод не сработает, если класс будет наследован от A, B и C, а параметр будет типа IGroup<A,B>*. Щас попробую Ваш метод поюзать.
Первый способ понятен, но внутри функции придётся пользоваться несколькими переменными, что может оказаться не так удобно. Но вариант вполне жизнеспособный.
Второй вариант не не будет работать при изменении порядка параметров. Впринципе это я и пытался сделать, только учел разный порядок аргументов — потому и вышло виртуальное наследование...
Когда речь заходит о спортивном программировании, чаще всего про ООП вообще не вспоминают. Тут речь больше об алгоритмах и их реализациях, чем об эстетизме…
Это уже третий способ.
Итого имеем:
1) Запоминание операций обмена при сортировке
2) Сортировка дважды по разному параметру
3) Сортировка не самих значений, а указателей на них
Как обычно бывает на хабре, статья содержит 20-30% полезной информации. Остальные 70-80% располагаются в комментариях. В статье я попытался решить возникшую передо мной проблему своими руками, в комментариях мне показали какие механизмы уже существуют в различных языках программирования.
Не совсем понял как можно использовать этот шаблон для определения языковых конструкции, которые не должны компилироваться. Возможно ли это? В тестах такое бывает необходимо.
t |= bytes[i] << (i << 3);
следует заменить на:
t |= T(bytes[i]) << (i << 3);
Сейчас поправлю в статье.
Приходится балансировать между этими понятиями.
Второй вариант не не будет работать при изменении порядка параметров. Впринципе это я и пытался сделать, только учел разный порядок аргументов — потому и вышло виртуальное наследование...
А std::sort() дает в среднем О(n*log(n)).
Итого имеем:
1) Запоминание операций обмена при сортировке
2) Сортировка дважды по разному параметру
3) Сортировка не самих значений, а указателей на них
Ссылка на исходный текст под каждым имеется.
нашёл на вики в статье Сортировочная станция ))
В любом случае +1 за шутку)) раньше не встречал такой