use*_*490 2 c++ optimization qt qvector
我试图从一个应该计算移动平均值的函数返回一个QVector.我的问题是如何使功能更有效.数学很好,我更想知道如果我在返回QVector时做错了什么.这是我到目前为止的代码:
QVector<double> moving_exponential_average(const QVector<double>& a, double lambda) {
if(lambda <0 ) {
lambda = 0;
}
if(lambda >1) {
lambda = 1;
}
QVector<double> b;
b.reserve(a.size());
b.append(a[0]);
double l_inv = 1-lambda;
for(unsigned int i = 1; i < a.size(); ++i) {
b.append(a[i]*lambda+l_inv*b[i-1]);
}
return b;
}
Run Code Online (Sandbox Code Playgroud)
我使用默认构造函数来保持QVector不设置默认值.我尝试调整大小的速度要慢得多.您有什么建议如何优化?
问候
QVector实现共享其数据(http://qt-project.org/doc/qt-5.0/qtcore/implicit-sharing.html#implicitly-shared),所以你没有做错任何事.