我有以下功能
vector<int> function(parameters)
{
//push back some elements to the vector
...
}
此函数将返回一个向量。我想在这个函数中将一些元素推回到这个向量中。我该怎么做才能让函数返回包含附加元素的向量?
编辑:事实上,我需要对函数进行递归,以便它可以继续向向量中添加元素。在这种情况下,我无法定义像vector<int> vec;
或return vec;
这样的向量,因为这会混淆递归。有修复吗?
答案 0 :(得分:2)
不清楚你想要做什么,但也许这会给你一个想法?在递归函数之外声明向量并通过引用传递它。
void foo(vector<int>& v)
{
static int count = 10;
if (count == 0) return;
v.push_back(count);
--count;
foo(v);
}
int main(int argc, const char * argv[])
{
vector<int> v;
foo(v);
for (int n : v)
cout << n << endl;
return 0;
}
答案 1 :(得分:0)
定义函数外部的向量。然后将向量作为引用传递给函数,并将其作为引用返回。这样,该函数正在操作并返回原始矢量。
std::vector<int> params; // the only vector
std::vector<int> &function(std::vector<int>¶meters)
{
// stuff
return parameters;
}
答案 2 :(得分:0)
目前还不清楚你在问什么,为什么以下的工作不适合你?:
vector<int> function_aux(vector<int> vec, type parameters)
{
if (termination_condition_reached(paramaters)) return vec;
vec.push_back(whatever);
return function_aux(std::move(vec), mutate(parameters));
}
vector<int> function(type parameters)
{
return function_aux(vector<int>{}, parameters);
}