返回QVector的最佳方式

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不设置默认值.我尝试调整大小的速度要慢得多.您有什么建议如何优化?

问候

Woj*_*wka 5

QVector实现共享其数据(http://qt-project.org/doc/qt-5.0/qtcore/implicit-sharing.html#implicitly-shared),所以你没有做错任何事.