Hello everyone,
I do not know why in for_each sample of MSDN, operator double() is invoked. Which statement triggers operator double()?
http://msdn2.microsoft.com/en-us/lib...9k(VS.71).aspx
Code:#include <vector> #include <algorithm> #include <iostream> // The function object to determine the average class Average { private: long num; // The number of elements long sum; // The sum of the elements public: // Constructor initializes the value to multiply by Average ( ) : num ( 0 ) , sum ( 0 ) { } // The function call to process the next elment void operator ( ) ( int elem ) \ { num++; // Increment the element count sum += elem; // Add the value to the partial sum } // return Average operator double ( ) { return static_cast <double> (sum) / static_cast <double> (num); } }; int main( ) { using namespace std; vector <int> v1; vector <int>::iterator Iter1; // Constructing vector v1 int i; for ( i = -4 ; i <= 2 ; i++ ) { v1.push_back( i ); } // The local state of a function object can accumulate // information about a sequence of actions that the // return value can make available, here the Average double avemod2 = for_each ( v1.begin ( ) , v1.end ( ) , Average ( ) ); cout << "The average of the elements of v1 is:\n Average ( v1mod2 ) = " << avemod2 << "." << endl; }
thanks in advance,
George



LinkBack URL
About LinkBacks


