1、代码解释
① 代码以函数方式实现对整型容器A和B对应位置元素的求和操作,并将结果存在容器C_back中返回;
② 关键:
<1> vector的数据操作优于数组,特别是在元素个数未知的情况下;
<2> 函数参数的传入和返回,如果直接操作数据本身,往往比较复杂,建议以指针的方式操作数据的地址;
<3> 巧用关键字static,保留重要的变量。
2、代码
#include <iostream>
#include <vector>
using namespace std;
vector<int> *add_two_vector(vector<int> *A, vector<int> *B, int size)
{
//函数结果在函数调用后要被保留,所以用static
static vector<int> C_back;
int sum;
for (int i = 0; i < size; i++)
{
sum = (*A)[i] + (*B)[i];
C_back.push_back(sum);
}
return &C_back;
}
int main()
{
vector<int> A, B, *C;
int size_A_B = 0;
//赋值A容器
cout << "A: ";
for (int i = 0; i < 9; i++)
{
A.push_back(i);
cout << A[i] << " ";
}
//赋值B容器
cout << endl
<< "B: ";
for (int i = 0; i < 9; i++)
{
B.push_back(i + 1);
cout << B[i] << " ";
}
//获得容器A和B的元素个数
size_A_B = A.size();
//容器A和B对应位置相加,存在静态容器C_back中,并返回C_back的地址
//用容器指针C接收C_back的地址
C = add_two_vector(&A, &B, size_A_B);
//对指针C解引用,打印结果
cout << endl
<< "sum of A and B: ";
for (int j = 0; j < size_A_B; j++)
{
cout << (*C)[j] << " ";
}
}
3、结果
A: 0 1 2 3 4 5 6 7 8
B: 1 2 3 4 5 6 7 8 9
sum of A and B: 1 3 5 7 9 11 13 15 17