gpt4 book ai didi

c++ - 递归 vector 返回

转载 作者:行者123 更新时间:2023-12-02 02:24:45 35 4
gpt4 key购买 nike

我已经创建了一个函数,该函数递归调用自身以向 vector 添加新元素,直到 vector.size() < 4vector.size() == 4函数返回带有 4 个元素的修改后的 vector 。

但是我无法弄清楚如何修改下面的代码以获得相同的结果,而无需在第一次调用中传递 vector (函数应该在第一次调用中创建一个新 vector ,并在每个下一个调用中添加新元素直到 vector.size() < 4 )

例如:

  • 第一次调用func(); ,创建一个 vector 并 push_back(vec.size() + 1) , vector 项:1
  • 第二次调用 func(vec) ,修改传递的 vector 添加新项, vector 项:1, 2
  • 第三次调用 func(vec) ,修改传递的 vector 添加新项, vector 项:1, 2, 3
  • 第四次调用 func(vec) ,修改传递的 vector 添加新项, vector 项:1, 2, 3, 4
  • 返回创建的 vector ,其中包含项目:1, 2, 3, 4在第一次通话中

代码:

#include <iostream>
#include <string>
#include <vector>

using namespace std;


vector<int> func (vector<int>& vec)
{
if (vec.size() < 4)
{
vec.push_back((vec.size() + 1));
func(vec);
}
return vec;
}

int main()
{
vector <int> v;
vector <int> my_vector = func(v);
cout << "vector items from main: " << endl;
for (auto &i : my_vector)
cout << i << endl;
}

输出:

vector items from main: 
1
2
3
4

最佳答案

你可能会这样做:

std::vector<int> func(std::vector<int> vec = {})
{
if (vec.size() < 4)
{
vec.push_back(vec.size() + 1);
vec = func(std::move(vec));
}
return vec;
}

Demo

关于c++ - 递归 vector 返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65864801/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com