我正在尝试获取两个 vector 的每个元素的总和,并将总和插入一个新 vector 。
即。
a = {1, 2 ,3} & b = {1, 2 ,3}
c=a+b
c = {2, 4, 6}
我已经让它适用于相同大小的 vector ,但每当其中一个 vector 大于另一个 vector 时,我就会收到 vector 下标超出范围的错误。
a = {1, 2 ,3} & b = {1, 2 ,3, 4}
c=a+b
我假设这发生在 b[3] + ?? 期间,我将如何添加它以便输出为:
c = {2, 4, 6, 4}
到目前为止我得到的是:
vector<int> a = { 1,2,3,4 };
vector<int> b = { 5,4,3,2,1 };
vector<int> *vPtr;
vPtr = new vector<int>;
int sum;
int size = a.size();
if (size < b.size())
size = b.size();
for (unsigned i = 0; i < size; i++) {
sum = a[i] + b[i];
(*vPtr).push_back(sum);
}
for (vector<int>::const_iterator it = (*vPtr).begin(); it != (*vPtr).end(); it++)
cout << *it << " ";
cout << endl;
return 0;
最佳答案
在较小的 vector 末尾添加额外的零。这是一个例子:
int sizeDifference = abs(a.size() - b.size());
if(sizeDifference != 0){
if(a.size() > b.size())
for(int i = 0; i<sizeDifference; ++i)
b.push_back(0);
else
for(int i = 0; i<sizeDifference; ++i)
a.push_back(0);
}
关于c++ - 对两个彼此平行的 int vector 的元素求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46859837/