Каковы практические применения для STL 'частичный_сум'? - PullRequest
18 голосов
/ 07 ноября 2010

Что / где практическое использование алгоритма partial_sum в STL ?

Какие еще есть интересные / нетривиальные примеры или варианты использования?

Ответы [ 11 ]

0 голосов
/ 07 ноября 2010

Вы можете построить «скользящую сумму» (предшественник скользящей средней):

template <class T>
void moving_sum (const vector<T>& in, int num, vector<T>& out)
{
    // cummulative sum
    partial_sum (in.begin(), in.end(), out.begin());

    // shift and subtract
    int j;
    for (int i = out.size() - 1; i >= 0; i--) {
        j = i - num;
        if (j >= 0)
            out[i] -= out[j];
    }    
}

А затем назовите его с помощью:

vector<double> v(10);
// fill in v
vector<double> v2 (v.size());
moving_sum (v, 3, v2);
...