Не найдя «ускоренного» способа сброса аккумулятора в C ++, я наткнулся на фрагмент кода, который, кажется, сбрасывает повышающий аккумулятор.Но не понимаю, как это достигается.Код такой, как показано ниже -
#include <iostream>
#include <boost/accumulators/accumulators.hpp>
#include <boost/accumulators/statistics/stats.hpp>
#include <boost/accumulators/statistics/mean.hpp>
using namespace boost::accumulators;
template< typename DEFAULT_INITIALIZABLE >
inline void clear( DEFAULT_INITIALIZABLE& object )
{
object.DEFAULT_INITIALIZABLE::~DEFAULT_INITIALIZABLE() ;
::new ( boost::addressof(object) ) DEFAULT_INITIALIZABLE() ;
}
int main()
{
// Define an accumulator set for calculating the mean
accumulator_set<double, stats<tag::mean> > acc;
float tmp = 1.2;
// push in some data ...
acc(tmp);
acc(2.3);
acc(3.4);
acc(4.5);
// Display the results ...
std::cout << "Mean: " << mean(acc) << std::endl;
// clear the accumulator
clear(acc);
std::cout << "Mean: " << mean(acc) << std::endl;
// push new elements again
acc(1.2);
acc(2.3);
acc(3.4);
acc(4.5);
std::cout << "Mean: " << mean(acc) << std::endl;
return 0;
}
Что делают строки с 7 по 12?Как «очистить» удается сбросить аккумулятор?Кроме того, есть ли какой-то стандартный способ повышения, которого мне не хватает, и любые другие способы достижения того, что сделал приведенный выше код.