Cumulative standard deviation: Difference between revisions

m (→‎{{header|C++}}: Fix C++ lang tag)
Line 116:
#include <numeric>
 
template <typename Iterator>
double standard_dev( std::vector<double> & ) ;
double standard_dev( std::vector<double>Iterator &begin numbers, Iterator end ) {
double mean = std::accumulate( numbers.begin( ) , numbers.end( ) , 0 ) / numbers.sizestd::distance( begin , end ) ;
double standard_dev( std::vector<double> & )squares ;
for( std::vector<double>::const_iteratorIterator vdi = numbers.begin( ) ; vdi != numbers.end( ) ; vdi++ )
squares.push_back( std::pow( *vdi - mean , 2 ) ) ;
return powstd::sqrt( std::accumulate( squares.begin( ) , squares.end( ) , 0 ) / squares.size( ) , 0.5 ) ;
 
int main( ) {
double demoset[] = { 2 , 4 , 4 , 4 , 5 , 5 , 7 , 9 } ;
int demosize = sizeof demoset / sizeof *demoset ;
std::vector<double> numbers ;
for ( double *d = demoset ; d != demoset + demosize ; ++d )
numbers.push_back( *d ) ;
std::cout << "The standard deviation of\n" ;
std::copy( numbers.begin( )demoset , numbers.end(demoset + )demosize , std::ostream_iterator<double>( std::cout, " " ) ) ;
std::cout << "\nis " << standard_dev( numbersdemoset , demoset + demosize ) << " !\n" ;
return 0 ;
 
double standard_dev( std::vector<double> & numbers ) {
double mean = std::accumulate( numbers.begin( ) , numbers.end( ) , 0 ) / numbers.size( ) ;
std::vector<double> squares ;
for( std::vector<double>::const_iterator vdi = numbers.begin( ) ; vdi != numbers.end( ) ; vdi++ )
squares.push_back( pow( *vdi - mean , 2 ) ) ;
return pow( std::accumulate( squares.begin( ) , squares.end( ) , 0 ) / squares.size( ) , 0.5 ) ;
}</lang>
 
Anonymous user