【发布时间】:2017-07-23 06:18:47
【问题描述】:
所以我正在制作一个函数来获取向量的某些元素并将它们存储到另一个向量中。每当我运行程序时,它都会出现分段错误错误?为什么会发生这种情况,我该如何解决,以免发生这种情况?
#include <iostream>
#include <vector>
#include <string>
using namespace std;
void addition (vector <char> a, vector <string> b)
{
for (int i = 0; i < a.size(); ++i)
{
if (a[i] == '3')
{
b.push_back("3");
}
if (a[i] == '4')
{
b.push_back("4");
}
if (a[i] == '+')
{
b.push_back("+");
}
}
}
int main()
{
vector <char> v1 = {'3', '4', '+', '3', '4'};
vector <string> v2;
addition(v1, v2);
cout << v2[0] << endl;
return 0;
}
【问题讨论】:
-
为什么?我很困惑
-
我看的不够仔细,我的错。拿回来了
-
如果避免使用out-parameters,程序的流程会变得更加清晰。例如。
vector<string> addition(vector<char> a)。避免使用它们还有许多其他充分的理由。 -
@bastwendo 您是否对为什么在调用
foo后int foo(int x) { x = 10; } int main() { int z = 1; foo(z); }不使z等于10 感到困惑?出于同样的原因,您的向量不会改变 - 它被称为 按值传递。