Home
Blog
Code-Blog
Twitter
Downloads
Links / Books
About
|
Websites |
StatisticsSome statistics algorithm struct Min { double m_v; public: Min() { m_v = (std::numeric_limits<double>::max)(); } void operator() (double v) { if (v < m_v) m_v = v; } double Minimun() const { return m_v; } }; struct Max { double m_v; public: Max() { m_v = -(std::numeric_limits<double>::max)(); } void operator() (double v) { if (v > m_v) m_v = v; } double Maximun() const { return m_v; } }; struct Avg { double m_v; int m_count; public: Avg() { m_count = 0; m_v = 0; } void operator() (double v) { m_v += v; ++m_count; } double Average() const { return m_v / double(m_count); } }; template<class T1, class T2> struct TBind : public T1, public T2 { void operator() (double v) { T1::operator()(v); T2::operator()(v); } }; template<class T1, class T2> TBind<T1, T2> operator && (const T1&, const T2&) { return TBind<T1, T2>(); } int main() { using namespace std; vector<int> v; v.push_back(2); v.push_back(1); v.push_back(3); //auto r = cout << for_each(v.begin(), v.end(), Min() && Max() && Avg()).Minimun(); //cout << r.Maximum(); } //*c++0x*/ int main() { using namespace std; vector<int> v; v.push_back(2); v.push_back(1); v.push_back(3); auto r = for_each(v.begin(), v.end(), Min() && Max() && Avg()); cout << r.Minimun() << endl; cout << r.Maximun() << endl; cout << r.Average() << endl; }
|