Я пытаюсь смоделировать систему, которая требует нескольких переменных и параметров и требует нескольких вложенных функций. Мне было интересно, есть ли способ передать их как группу, чтобы я мог просто передать один или два аргумента без необходимости перечислять каждый параметр и переменную в каждой функции и пытаться отслеживать их расположение в массиве/векторе. . С R можно использовать with()
для оценки функции, используя список именованных параметров (см. здесь). Можете ли вы сделать это с картой в C++?
@Yakk-AdamNevraumont Вы имеете в виду создание структуры из одного и ее передачу?
Я не думаю, что это был ответ. Я думаю, что ответ может быть «нет, я не пробовал struct
»?
std::map требует, чтобы его значения были одного типа, поэтому, если у вас разнородный набор аргументов, вам не повезло. Структура, вероятно, ваш лучший выбор.
Напишите struct
с параметрами.
Множественные вложенные функции либо нуждаются в переопределении, принимающем такой struct
, либо должны быть переписаны, чтобы использовать его в качестве аргумента.
Теперь вы можете передавать параметры в пакете.
Если набор параметров неоднороден, вам может не повезти. Вы также можете решить эту проблему, используя наследование и тому подобное. Многое будет зависеть от деталей.
Если есть значительный набор однородных параметров, создание их как struct
может уменьшить количество параметров, которые вы передаете.
void do_math(int x, int y, int z, int w);
против
struct coords {
int x,y,z,w;
};
void do_math(coords);
если мы хотим сохранить оригинал do_math
, мы можем:
inline void do_math(coords c) { do_math(c.x, c.y, c.z, c.w); }
теперь у нас может быть код, который хочет вызывать do_math
кучу раз с настройками;
void do_math_over_and_over(coords c, int x_range) {
for(int i = 0; i < x_range; ++i) {
coords tmp = c;
tmp.x += i;
do_math(tmp)
}
}
Однако, используя этот метод, если я хочу создать несколько групп параметров, мне нужно создать несколько структур, да?
@Плинт да ты знаешь
А вы пробовали
struct
?