#include <iostream>
#include <vector>
using namespace std;
void SaveNumbers(vector<int> numbers);
int main()
{
vector<int> numbers;
SaveNumbers(numbers);
cout << "FROM MAIN FUNCTION:" << endl;
for(int i = 0; i < 5; i++)
{
cout << numbers.at(i) << " ";
}
cout << endl;
return 0;
}
void SaveNumbers(vector<int> numbers)
{
for(int i = 0; i < 5; i++)
{
numbers.push_back(i + 1);
}
cout << "FROM FUNCTION: " << endl;
for(int i = 0; i < 5; i++)
{
cout << numbers.at(i) << " ";
}
cout << endl;
}
//OUTPUT:
/*
FROM FUNCTION:
1 2 3 4 5
FROM MAIN FUNCTION:
terminate called after throwing an instance of 'std::out_of_range'
*/
Run Code Online (Sandbox Code Playgroud)
当我在 void 函数中使用 vector 时,vector 有内存,我得到了预期的结果。当我在 main 函数中使用 vector 时,程序会导致错误消息。我应该怎么做才能将内存从 void 函数向量传递给主函数向量而不泄漏它。
SaveNumbers需要采用vectorby 引用,否则调用代码将看不到更改。
void SaveNumbers(vector<int> & numbers);
Run Code Online (Sandbox Code Playgroud)
您可以通过玩具示例看到这一点
void byVal(int n) { n = 42; }
void byRef(int &n) { n = 42; }
int main()
{
int a = 0;
byVal(a);
cout << a; // prints 0
byRef(a);
cout << a; // prints 42
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
83 次 |
| 最近记录: |