gpt4 book ai didi

c++ - 尝试添加两个 vector ,但添加顺序错误

转载 作者:太空宇宙 更新时间:2023-11-04 12:31:00 24 4
gpt4 key购买 nike

在这个函数中,我的目标是添加多项式的系数,系数存储在 vector 中。 P 是我创建的 Polynom 类的私有(private)成员。 “RHS”不是该类的成员——它是该类的另一个实例,所以我仍然可以访问它的所有私有(private)成员,比如 RHS.P[i]。这是我到目前为止的代码。 `

          Polynom Polynom::operator+(const Polynom& RHS) cons
vector <int> temp;
vector <int> temp2;
vector <int> temp3;


for (int i = 0; i <= P.size()-1; i ++)
{
temp.push_back(P[i]);
}

for (int i = 0; i <= RHS.P.size()-1; i ++)
{
temp2.push_back(RHS.P[i]);
}

int largerPoly = P.size()-1;

for (int i = 0; i <= P.size()-1; i++)
{
if(largerPoly == RHS.P.size()-1)
{
temp3.push_back(temp2[largerPoly - i]);
}
else
{
temp3.push_back(temp[i]);
}
largerPoly --;
}
return Polynom(temp3);




`

例如,如果我输入 P vector :(4)(2)(-1)(2)(0)(0)(2)

在另一个 vector 中:(-4)(0)(1)

得到的 vector 应该是:(4)(2)(-1)(2)(-4)(0)(3) (1+2)=3 (0+-4)=-4

这基本上意味着我想从后面添加 vector (希望这是有意义的)

不幸的是,这不是我使用这段代码得到的输出。关于我缺少什么的任何提示?

最佳答案

让它更简单,简单地拆分这两种情况:

Polynom Polynom::operator+(const Polynom& arg) const
{
const auto &lhs = this->P; // define some shorthand refs
const auto &rhs = RHS.P;

std::vector<int> res;

// case 1: lhs is larger
if (lhs.size() > rhs.size()) {
res.assign(lhs.begin(), lhs.end()); // copy lhs into res

auto offset = lhs.size() - rhs.size();

for (auto i = 0; i < rhs.size(); i++) {
res[i + offset] += rhs[i];
}
}
// case 2: rhs is larger
else {
res.assign(rhs.begin(), rhs.end()); // copy lhs into res

auto offset = rhs.size() - lhs.size();

for (auto i = 0; i < lhs.size(); i++) {
res[i + offset] += lhs[i];
}
}

return Polynom(res);
}

使用引用还意味着我们不必将整个数据复制到多个局部变量中。

关于c++ - 尝试添加两个 vector ,但添加顺序错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58661588/

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