Информация об изменениях

Сообщение Re[5]: Философско-практические вопросы про метапрограммирова от 09.02.2023 13:05

Изменено 09.02.2023 13:09 rg45

Re[5]: Философско-практические вопросы про метапрограммирование
Здравствуйте, Максим, Вы писали:

М>Заинтриговали А по какимм критериям можно определить, что контейнер не нуждается в дополнительной сортировке?


Ну стандартные контейнеры std::map, std::set (multimap, multiset) по природе своей всегда отсортированы:

http://coliru.stacked-crooked.com/a/3ff8eb5d29c281a4

#include <iostream>
#include <set>

int main()
{
    std::set<int> set { 3, 5, 2, 9, 1, 7, 4, 8, 0, 6 };
    
    for (const int value : set)
        std::cout << " " << value; // -> 0 1 2 3 4 5 6 7 8 9
}
Re[5]: Философско-практические вопросы про метапрограммирова
Здравствуйте, Максим, Вы писали:

М>Заинтриговали А по какимм критериям можно определить, что контейнер не нуждается в дополнительной сортировке?


Ну стандартные контейнеры std::map, std::set (multimap, multiset) по природе своей всегда отсортированы:

http://coliru.stacked-crooked.com/a/3ff8eb5d29c281a4

#include <iostream>
#include <set>

int main()
{
    std::set<int> set { 3, 5, 2, 9, 1, 7, 4, 8, 0, 6 };
    
    for (const int value : set)
        std::cout << " " << value; // -> 0 1 2 3 4 5 6 7 8 9
}


А, по каким критериям? Ну, проще всего это сделать через traits-ы. Ты свою обобщенную процедуру сразу делаешь заточенной на использование трейтсов. А в трейтсах уже можно навернуть аналитику любой сложности — от автоматического определения до ручной специализации. Использование трейтсов делает обощенные процедуры легко расширяемыми.