gpt4 book ai didi

c++ - 将 QVector 指针作为参数传递

转载 作者:太空宇宙 更新时间:2023-11-04 15:42:38 29 4
gpt4 key购买 nike

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
}

}

但是,对于 *(vector+i) = min; 行,编译器给我"no match for operator ="。在 QVector 上执行此类操作的最佳方式是什么?

2) 该函数应该以 matlab : 运算符工作的方式在绘图的 vector 上线性分布值,例如 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;
}
}

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

最佳答案

I want to place a float a certain place in the QVector.

然后使用这个:

(*vector)[i] = min; //Problematic line

vector 是指向 QVector 的指针,*vector 将是一个 QVector,它可以像任何 QVector 一样用 [i] 表示。但是,由于优先级的原因,需要使用括号来获得正确的运算顺序。

关于c++ - 将 QVector 指针作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20939738/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com