如何将元素追加到向量函数?

时间:2014-05-24 03:09:31

标签: c++ vector

我有以下功能

vector<int> function(parameters)
{
    //push back some elements to the vector
    ...
}

此函数将返回一个向量。我想在这个函数中将一些元素推回到这个向量中。我该怎么做才能让函数返回包含附加元素的向量?

编辑:事实上,我需要对函数进行递归,以便它可以继续向向量中添加元素。在这种情况下,我无法定义像vector<int> vec;return vec;这样的向量,因为这会混淆递归。有修复吗?

3 个答案:

答案 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>&parameters)
{ 
// 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);
}