-(void)userShow{
xVal = new vector<double>();
yVal = new vector<double>();
xyVal = new vector<double>();
xxVal = new vector<double>();
value = new vector<double>();
for(it = xp->begin(); it != xp->end(); ++it){
xVal->push_back(it->y);
xxVal->push_back(it->x);
}
for(it = yp->begin(); it != yp->end(); ++it){
xyVal->push_back(it->x);
yVal->push_back(it->y);
}
for (int i = 0; i < xVal->size(); i++){
int c = (*xVal)[i];
for(int i = 0; xyVal[i] < xxVal[i]; i++){
double value = yVal[c-1] + (yVal[c] - yVal[c-1])*(xxVal[i] - xyVal[c-1])/(xyVal[c] - xyVal[c-1]);
yVal->push_back(value);
}
}
}
我的代码的double value = ...
部分存在问题。我收到三条错误,指出invalid operands to binary expression ('vector<double>' and 'vector<double>')
指向c
。
当我尝试使用双倍时,int c = (*xVal)[i];
应为double c = (*xVal)[i];
我会得到6个错误Array subscript is not an integer
。这意味着我需要将数组转换为整数。如果我使用向量,我如何获得数组?目前只是很多混乱。
不确定我是否真的需要解释代码应该做什么,但是如果有帮助的话。我试图得到它所以需要两个向量将向量x和y分成x和y。然后取xp的y和yp的y并将它们放在一起。但由于xp和yp向量不匹配,我需要使用for循环和double值算法来获得一组不错的数字。
答案 0 :(得分:3)
c
没问题。正如您的编译器所说,问题确实存在于double value = ..
中。你有指针,所以你不能像这样访问数组的元素:
double value = yVal[c-1] + ...
一定是
double value = (*yVal)[c-1] +
xyVal
,xxVal
等相同。您需要修复整个内部for
循环。
但为什么你这样分配vector
...?有没有理由使用new
?这很容易出错。我只使用
vector<double> xVar;
而不是
xVal = new vector<double>();
然后使用.
代替->
与*
结合使用。这样容易得多。
啊,忘了c
的问题 - 不,它不应该是double
。您不能将浮点数用于索引。此外,如果xVal
应该包含整数(以便它们可以用于索引),为什么不将vector
声明为vector< int >
而不是vector< double >
}?我不是你的程序中的逻辑,但看起来它(逻辑)应该改进,IMO。