将 QVector 指针作为参数传递

use*_*215 0 c++ qt qvector qtcore

1)我想将 QVector 的指针传递给一个函数,然后用它做事。我试过这个:

void MainWindow::createLinearVector(QVector<float> *vector, float min, float max )
{
    float elementDiff=(max-min)/(vector->size()-1);

    if(max>min) min -= elementDiff;
    else        min += elementDiff;

    for(int i=0; i< vector->size()+1 ; i++ )
    {
        min += elementDiff;
        *(vector+i) = min; //Problematic line
    }

}
Run Code Online (Sandbox Code Playgroud)

但是编译器给我 “不匹配的运营商=”*(vector+i) = min;行。在 QVector 上执行此类操作的最佳方法是什么?

2) 该函数应该以 matlab : 运算符的工作方式线性分布向量上的值,例如 vector(a:b:c)。在 Qt 中执行这些事情的最简单和最好的方法是什么?

编辑:

有了这里的帮助,最初的问题就解决了。:)

我也改进了方法本身。通过使用线性插值而不是像上面那样的多次加法,可以大大提高精度。多次加法会累积误差,而在很大程度上可以通过线性插值消除误差。

顺便说一句,第一个函数中的 if 语句是不必要的,即使在多重加法方法中也可以通过稍微重新排列一些东西来删除。

void MainWindow::createLinearVector(QVector<double> &vector, double min, double max )
{
    double range = max-min;
    double n =   vector.size();

    vector[0]=min;

    for(int i=1; i< n ; i++ )
    {
        vector[i] = min+ i/(n-1)*range;
    }
}
Run Code Online (Sandbox Code Playgroud)

我考虑过为此使用一些增强的循环,但它会更实用吗?例如,对于 foreach 循环,我仍然需要为插值增加一些变量,对吗?并且还为跳过第一个元素设置条件?

Sjo*_*erd 5

我想在 QVector 中的某个位置放置一个浮动。

然后使用这个:

(*vector)[i] = min; //Problematic line
Run Code Online (Sandbox Code Playgroud)

向量是指向 QVector 的指针,*vector将是 QVector,可以[i]像任何 QVector 一样指示。然而,由于优先级,需要括号来获得正确的操作顺序。