X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fcore%2Falgorithm.h;h=d295d00ab844c02e943f8795904ee8f35367dfd4;hb=01844ee2ba101c25655dd5eacf62ca9365f26f21;hp=b79114e9d7a8de906b7be40e4c684e1a9758280a;hpb=6bb431a4fdd6b6437c25890a89627d206a9e52ac;p=libs%2Fcore.git diff --git a/source/core/algorithm.h b/source/core/algorithm.h index b79114e..d295d00 100644 --- a/source/core/algorithm.h +++ b/source/core/algorithm.h @@ -2,6 +2,7 @@ #define MSP_CORE_ALGORITHM_H_ #include +#include namespace Msp { @@ -124,15 +125,17 @@ inline typename Container::const_iterator find_member(const Container &cont, con return find_if(cont, MemberMatch(value, mp)); } -template +template> struct MemberCompare { T C::*mem_ptr; + P pred; MemberCompare(T C::*p): mem_ptr(p) { } - bool operator()(const C &obj, const T &v) { return obj.*mem_ptr @@ -171,6 +174,12 @@ inline void stable_sort_member(Container &cont, T Container::value_type::*mp) stable_sort(cont, MemberCompare(mp)); } +template +inline void transform(Container &cont, Predicate pred) +{ + transform(cont.begin(), cont.end(), cont.begin(), pred); +} + } // namespace Msp #endif