Hirdetés

Új hozzászólás Aktív témák

  • Tankblock

    aktív tag

    válasz Tomika86 #17069 üzenetére

    template <typename T, typename Total, size_t N>
    class Moving_Average
    {
      public:
        Moving_Average& operator()(T sample)
        {
            total_ += sample;
            if (num_samples_ < N)
                samples_[num_samples_++] = sample;
            else
            {
                T& oldest = samples_[num_samples_++ % N];
                total_ -= oldest;
                oldest = sample;
            }
            return *this;
        }

        operator double() const { return total_ / std::min(num_samples_, N); }

      private:
        T samples_[N];
        size_t num_samples_{0};
        Total total_{0};
    };

    Moving_Average<double, double, 3> ma;
    for (int i = 0; i < 10; ++i)
        std::cout << (i * i) << ':' << ma(i * i) << ' ';
    std::cout << '\n';

    Igen megoldható.... [link] Google is segít.
    Inkább a cppreferenct kellene linkelni : [link]

Új hozzászólás Aktív témák