矢量/数组到整数

时间:2011-10-21 16:41:10

标签: objective-c++

-(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值算法来获得一组不错的数字。

1 个答案:

答案 0 :(得分:3)

c没问题。正如您的编译器所说,问题确实存在于double value = ..中。你有指针,所以你不能像这样访问数组的元素:

double value = yVal[c-1] + ...

一定是

double value = (*yVal)[c-1] +

xyValxxVal等相同。您需要修复整个内部for循环。


但为什么你这样分配vector ...?有没有理由使用new?这很容易出错。我只使用

vector<double> xVar;

而不是

xVal = new vector<double>();

然后使用.代替->*结合使用。这样容易得多。


啊,忘了c的问题 - 不,它不应该是double。您不能将浮点数用于索引。此外,如果xVal应该包含整数(以便它们可以用于索引),为什么不将vector声明为vector< int >而不是vector< double > }?我不是你的程序中的逻辑,但看起来它(逻辑)应该改进,IMO。