C++ 试图添加两个向量,但添加顺序错误
在这个函数中,我的目标是将多项式的系数相加,系数存储在向量中。P是我制作的多项式类的私有成员。“RHS”不是该类的成员-它是该类的另一个实例,因此我仍然可以访问它的所有私有成员,如RHS.P[I]。这是我到目前为止掌握的代码。 `C++ 试图添加两个向量,但添加顺序错误,c++,class,vector,C++,Class,Vector,在这个函数中,我的目标是将多项式的系数相加,系数存储在向量中。P是我制作的多项式类的私有成员。“RHS”不是该类的成员-它是该类的另一个实例,因此我仍然可以访问它的所有私有成员,如RHS.P[I]。这是我到目前为止掌握的代码。 ` Polynom Polynom::operator+(const Polynom& RHS) cons vector <int> temp; vector <int> temp
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);
`
多项式多项式::运算符+(常数多项式和RHS)cons
向量温度;
向量temp2;
向量temp3;
对于(int i=0;i使其更容易,并简单地将两种情况分开:
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);
}
Polynom Polynom::operator+(const Polynom&arg)const
{
const auto&lhs=this->P;//定义一些速记引用
const auto&rhs=rhs.P;
std::向量res;
//案例1:lhs更大
如果(lhs.size()>rhs.size()){
res.assign(lhs.begin(),lhs.end());//将lhs复制到res中
自动偏移=lhs.size()-rhs.size();
对于(自动i=0;i
使用引用还意味着,我们不必将整个数据复制到几个局部变量中。使之更容易,只需将两种情况分开:
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);
}
Polynom Polynom::operator+(const Polynom&arg)const
{
const auto&lhs=this->P;//定义一些速记引用
const auto&rhs=rhs.P;
std::向量res;
//案例1:lhs更大
如果(lhs.size()>rhs.size()){
res.assign(lhs.begin(),lhs.end());//将lhs复制到res中
自动偏移=lhs.size()-rhs.size();
对于(自动i=0;i
使用引用也意味着,我们不必在几个局部变量中复制整个数据。以相反的顺序存储系数
x^3 + x + 1 == 1 + x + x^3 <=> [1, 1, 0, 1]
x^3+x+1==1+x+x^3[1,1,0,1]
现在你所有的术语都会排成一行,x^n
的系数位于索引n
以相反的顺序存储你的系数
x^3 + x + 1 == 1 + x + x^3 <=> [1, 1, 0, 1]
x^3+x+1==1+x+x^3[1,1,0,1]
现在你所有的术语都会排成一行,x^n
的系数位于索引n