Advertisement
Guest User

Untitled

a guest
May 27th, 2016
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.70 KB | None | 0 0
  1.     /*
  2.     Average of Array
  3.     The average is defined as the sum of each value divided by count.
  4.     */
  5.     template< class T >
  6.     FORCEINLINE auto Avg(const TArray<T>& Values) -> decltype(T() / double())
  7.     {
  8.         decltype(T() / double()) sum;
  9.         if (ensure(Values.Num() > 0))
  10.         {
  11.             auto iter = begin(Values);
  12.             double num = Values.Num();
  13.  
  14.             //initialize the result as the partial result from first element because the element type could be uninitialized, e.g. FVector
  15.             sum = *iter / num;
  16.             ++iter;
  17.             do
  18.             {
  19.                 sum += *iter / num;
  20.                 ++iter;
  21.             } while (iter != end(Values));
  22.         }
  23.         else
  24.         {
  25.             sum = T() / 1.0;    //fall back to whatever default value, exception handled in ensure
  26.         }
  27.         return sum;
  28.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement