gpt4 book ai didi

c++ - 递归函数中的段错误,将结果存储在 vector 中

转载 作者:行者123 更新时间:2023-11-30 02:23:31 26 4
gpt4 key购买 nike

我一直收到这个段错误,但我不知道它是从哪里来的。抱歉,我还是编码新手。

#include <iostream>
#include <vector>

using namespace std;

vector<int> map(vector<int> v, vector<int>::iterator i, vector<int> result) { //set i = v.begin() in main
if (i==v.end()) {
return result;
} else {
result.push_back((*i)*(*i));
i++;
map(v,i,result);
}
}

int main() {
vector<int> v;
vector<int> result;

for (int i=0;i<20;i++) {
v.push_back(i);
}

vector<int>::iterator it=v.begin();

result=map(v,it,result);
}

显然,我需要添加更多字词,因为我的问题主要是代码。

最佳答案

您按值传递 vector ,因此更改不会在函数调用之间持续存在。

通过引用传递 vector 来实现这一点。

此外,您还需要在 else 情况下返回 vector 。

此外,也通过引用传递 v,以便在检查 v.end() 时迭代器正常。否则它会在每次函数调用时查看 v 的不同拷贝。

把所有东西放在一起,你会得到:

vector<int> map(vector<int>& v, vector<int>::iterator i, vector<int>& result)  { 
if (i==v.end()) {
return result;
} else {
result.push_back((*i)*(*i));
i++;
return map(v,i,result);
}
}

关于c++ - 递归函数中的段错误,将结果存储在 vector 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46137225/

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