【发布时间】:2018-04-25 17:51:59
【问题描述】:
我遇到了一个我无法理解的代码的鼻屎。前提是输入一组数字:3 4 5 6 7,会输出:4x^(3)+5x^(2)+6x^(1)+7x^ (0) 使用 istream 和 ostream。我正在为数字使用向量,而我遇到的问题是向量没有正确填充。
例如,如果向量被称为 vec1,则上面的输入给出:
`vec1[0]==4
vec1[1]==5
vec1[2]==6
vec1[3]==4
vec1[4]==4`
但我希望它输出:
`vec1[0]==3
vec1[1]==4
vec1[2]==5
vec1[3]==6
vec1[4]==7`
我找不到任何有关将 istream 与矢量一起使用的示例教程,所以我希望有人可以帮助我了解将 istream 与矢量一起使用的基础知识吗?只是一个一般的例子绝对很棒!
PS:我是 C++ 新手,所以如果我在任何地方使用的术语有误,我深表歉意。
编辑:(这是我目前的 istream 代码):
istream& operator>>(istream& left, Polynomial& right) //input
{
int tsize, tmp;
while (!(left >> tsize))
{
left.clear();
left.ignore();
}
if (tsize < 0)
{
tsize *= -1;
}
vector<double>tmp1;
for (int i = 0; i < tsize; i++)
{
tmp1.push_back(0);
}
right.setPolynomial(tmp1);
for (int i = 0; i < tsize; i++)
{
while (!(left >> tmp))
{
left.clear();
left.ignore();
}
right[i]=tmp;
}
//return a value
return left;
}
`
void Polynomial::setPolynomial(vector<double>vec1)
{
for (int i = 0; i < vec1.size(); i++)
polynomial.push_back(vec1[i]);
}
【问题讨论】:
-
向我们展示代码。我怀疑你有一些简单而常见的错误。
-
vector<double>tmp1;for (int i = 0; i < tsize; i++) { tmp1.push_back(0); }-- 不需要这样做。仅此而已——vector <double> tmp2(tsize);