|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Defined in header <cstdarg> | ||
void va_copy( std::va_list dest, std::va_list src); | (since C++11) | |
Theva_copy macro copiessrc todest.
va_end should be called ondest before the function returns or any subsequent re-initialization ofdest (via calls tova_start orva_copy).
Contents |
| dest | - | an instance of theva_list type to initialize |
| src | - | the sourceva_list that will be used to initializedest |
(none)
#include <cmath>#include <cstdarg>#include <iostream> double sample_stddev(int count, ...){double sum=0; std::va_list args1;va_start(args1, count); std::va_list args2; va_copy(args2, args1);for(int i=0; i< count;++i){double num=va_arg(args1,double); sum+= num;}va_end(args1);double mean= sum/ count; double sum_sq_diff=0;for(int i=0; i< count;++i){double num=va_arg(args2,double); sum_sq_diff+=(num- mean)*(num- mean);}va_end(args2);returnstd::sqrt(sum_sq_diff/ count);} int main(){std::cout<< sample_stddev(4,25.0,27.3,26.9,25.7)<<'\n';}
Output:
0.920258
| enables access to variadic function arguments (function macro)[edit] | |
| accesses the next variadic function argument (function macro)[edit] | |
| ends traversal of the variadic function arguments (function macro)[edit] | |
C documentation forva_copy | |