/* ========================================================================== * ÀÛ ¼º ÀÚ : À̼ø±Ô * ÀÛ ¼º ÀÏ : 2006.09.18 * * ³» ¿ë : ¹ü¿ë ¾Ë°í¸®Áò ÇÔ¼ö ¸ðÀ½ * Ãß°¡³»¿ë : * ÀÛ¾÷ÀÏ ÀÛ¾÷ÀÚ ÀÛ¾÷³»¿ë * * ÁÖÀÇ»çÇ× : *===========================================================================*/ #pragma once #include using namespace std; /// ¹Ýº¹ template inline FUNC ForEach( INPUTITER first, INPUTITER last, FUNC func ) { for( ; first != last; ++first ) { func( *first ); } return func; } /// º¯È¯ template inline UNARYOP Transform( INPUTITER first, INPUTITER last, OUTPUTITER out, UNARYOP op ) { for( ; first != last; ++first, ++out ) { *out = op( *first ); } return op; } template inline BINARYOP Transform( INPUTITER0 first1, INPUTITER0 last1, INPUTITER1 first2, OUTPUTITER out, BINARYOP op ) { for( ; first1 != last1; ++first1, ++first2, ++out ) { *out = op( *first1, *first2 ); } return op; } /// ¼¼±â template inline unsigned int Count( INPUTITER first, INPUTITER last, const T& val ) { unsigned int n = 0; for( ; first != last; ++first ) { if( *first == val ) ++n; } return n; } template inline unsigned int CountIf( INPUTITER first, INPUTITER last, PREDICATE pred ) { unsigned int n = 0; for( ; first != last; ++first ) { if( pred( *first ) ) ++n; } return n; } /// °Ë»ö template inline INPUTITER Find( INPUTITER first, INPUTITER last, const T& val ) { while( first != last && *first != val ) { ++first; } return first; } template inline INPUTITER FindIf( INPUTITER first, INPUTITER last, PREDICATE pred ) { while( first != last && !pred(*first) ) { ++first; } return first; } /// Á¤·Ä template inline void Sort( INPUTITER first, INPUTITER last ) { sort( first, last ); } template inline void Sort( INPUTITER first, INPUTITER last, COMPARE comp ) { sort( first, last, comp); }