Я не совсем понимаю, как использовать результаты рекурсивной функции.Можно ли использовать рекурсивную функцию внутри push back, как это?
Я могу придумать два способа сделать это.
Опция 1
Изменить recursive_function
, чтобы также принять ссылку на std::vector<int>
.Обновите его реализацию до push_back
элементов вектора соответствующим образом.Передавая вектор к recursive_function
при вызове.
void recursive_function(node* p, std::vector<int>& v)
{
// When appropriate...
v.push_back(p.data);
}
и используйте его как
void vector_function(){
std::vector<int> v;
recursive_function(p, v));
}
Опция 2
Измените recursive_function
, чтобы также принять std::function
.Обновите его реализацию, чтобы вызвать std::function
со значением узла соответствующим образом.Используйте лямбда-функцию, которую можно преобразовать в std::function
, который recursive_function
принимает при вызове функции.Позаботьтесь о вызове push_back
для вектора в лямбда-функции с переданным ему аргументом.
void recursive_function(node* p, std::function<void(int)> f)
{
// When appropriate...
f(p.data);
}
и используйте его как
void vector_function(){
std::vector<int> v;
recursive_function(p, [&v](int e) -> void { v.push_back(e); });
}