c++ - 对两个彼此平行的 int vector 的元素求和

标签 c++ vector int addition

我正在尝试获取两个 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/

相关文章:

c++ - 在 OpenGL 上下文中使用 SDL 传输

c++ - 为什么我的二十面体画不出来?

c++ - 在 vector 中使用 reserve() 的好处 - C++

c - 如何对使用 malloc 声明的 int 数组进行操作?

c++ - 测试字符串 vector 中的 int

java - 数字格式异常 - 使用 parseInt 进行转换

c++ - 在文件中设置位置且无法读回

C++ 陷入循环

c++ - 为 lldb 中的大型数据结构设置观察点

c++ - 如何在 C++ 中为 MPL vector 的所有成员显式实例化模板?