Просмотрев преимущества метапрограммирования в Ruby и Python, но будучи связанными с языками более низкого уровня, такими как C++ и C для реальной работы, я думаю о манерах, с помощью которых можно объединить два , Один экземпляр входит в простую задачу для сортировки списков произвольных структур/классов. Например:Custom C++ Preprocessor/Typeful Macros
struct s{
int a;
int b;
};
vector<s> vec;
for(int x=0;x<10;x++){
s inst;
inst.a = x;
inst.b = x+10;
vec.push_back(inst);
}
В конце концов, я хотел бы, чтобы иметь возможность сортировать инст произвольно с минимальным количеством шаблонного кода. Самый простой способ, я могу видеть, чтобы сделать это, чтобы использовать то STL в:
sort(vec.begin(),vec.end());
Но это требует от меня, чтобы написать метод, который может сравнить «STRUCT S» с. Я бы предпочел:
sort(vec,a ASC,b DESC);
Это очень ясно не действительный C++.
Каков наилучший способ осуществить мою мечту? Если бы у меня был какой-то типный макрос, это показало бы мне, каков тип элементов вектора, тогда было бы тривиально писать макросы препроцессора , чтобы создать функцию, необходимую для сортировки.
Альтернативой, похоже, является создание собственного препроцессора. Это работает хорошо, вплоть до момента, когда я должен снова вывести тип «vec». Есть простой способ сделать это?
Контекст: Меньше кода = меньше ошибок, соревнований по программированию.
Блестяще, я знал, что кто-то должен был сделать это с помощью шаблонов. Благодаря! –