试图添加两个矢量,但添加顺序错误
Trying to add two vectors but it is adding in the wrong order
在这个函数中,我正在处理的目标是添加多项式的系数,系数存储在向量中。P是我制作的Polynom课程的私人成员。"RHS"不是该类的成员,它是该类的另一个实例,所以我仍然可以访问它的所有私有成员,比如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向量中输入:(4((2((-1((2
在另一个向量中:(-4((0((1(
得到的矢量应该是:(4((2((-1((2(-4((0((3((1+2(=3(0+-4(=-4
这基本上意味着我想从后面添加向量(希望这有意义(
不幸的是,这不是我从这段代码中得到的输出。关于我缺少什么,有什么建议吗?
简化并简单地拆分两种情况:
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);
}
使用引用也意味着,我们不必在几个局部变量中复制整个数据。
以相反的顺序存储系数。
x^3 + x + 1 == 1 + x + x^3 <=> [1, 1, 0, 1]
现在,所有的项总是排成一行,x^n
的系数在索引n
处。
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 如何在C++中从两个单独的for循环中添加两个数组
- CMake-按正确顺序将项目与C运行时对象文件链接
- 函数调用中参数的顺序重要吗
- 如何通过替换顺序代码的while循环来添加OpenMP for循环
- 试图添加两个矢量,但添加顺序错误
- 编写链接函数的更短/更有效的方法,该函数按字典顺序添加新元素
- 添加字符串和文字,顺序如何影响是否可以正确添加字符串
- C++静态初始化顺序:添加到映射中
- 如何将整数向量转换为 2 位十六进制并按顺序添加到 c 字符串?
- 在c++中按字母顺序将节点添加到链表中
- 双向循环列表中的赋值运算符以错误的顺序添加元素
- 如何在两个数组中添加元素,但顺序相反
- C++:为什么返回false的集合顺序的函子只允许向集合中添加一个元素
- 如果向量<int>按顺序添加到向量中,我是否需要对向量进行排序?
- 如何使用双向搜索按字母顺序将随机字符串添加到数组中
- c++按字母顺序向列表中添加元素
- 递归-按顺序向列表中添加树数据
- 我的图标被添加到系统托盘的顺序
- 为了得到最精确的结果,应该按哪个顺序添加浮点数