gpt4 book ai didi

c++ - STL Vector 的重载运算符

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:26:45 30 4
gpt4 key购买 nike

我知道这通常不是最好的主意,但我决定试一试。我正在尝试重载 + 运算符以对两个 vector 进行元素明智的加法。由于某种原因,它仅正确返回 vector 中的第一个值。我不知道出了什么问题?如果我在计算总和数组的元素时使用 push_back 而不是调整大小,它也不会起作用。这是代码:

    #include "stdafx.h"
#include <iostream>
#include "conio.h"
#include <vector>

using namespace std;

class dvector{

public:
vector<double> q;
dvector(vector<double>);
dvector();
};
dvector::dvector(vector<double> a) {
q=a;
};
dvector::dvector() {
vector<double> q;
};

dvector operator+(dvector c1, dvector c2)
{
int sz=c1.q.size();
dvector sum;
sum.q.resize(sz);
double temp;
for (int i=0; i<sz; i++){
sum.q[i]=c1.q[i]+c2.q[i];
return sum;
}
}


int _tmain(int argc, _TCHAR* argv[])

{
vector<double> test1;
test1.resize(10);
for (int i=0; i<10;i++){
test1[i]=i;
}
vector<double> test2;
test2.resize(10);
for (int i=0; i<10;i++){
test2[i]=2;
}
dvector dtest1(test1);
dvector dtest2(test2);
dvector sum=dtest1+dtest2;

for (int i =0;i<10;i++)

{
cout<<sum.q[i]<<' ';
}
getch();
return 0;
}

最佳答案

您在第一次迭代后立即在 for 循环中 return。您应该将 return sum; 移动到 operator+ 的最后一行。

关于c++ - STL Vector 的重载运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19513250/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com