/* * @file Algorithm.h * * @date 2012-1-10 * @Author: dev * @brief 一些通用算法 */ #ifndef PAI_FRAME_SYSUTILITY_ALGORITHM_H #define PAI_FRAME_SYSUTILITY_ALGORITHM_H #include #include #include "Turtle.h" /** * @brief 用来比较map中的值的函数对象,来自于 */ template class PAI_UTILS_TEMPLATE_EXPORT value_equals { private: V value; public: // constructor (initialize value to compare with) value_equals (const V& v) : value(v) {} // comparison bool operator() (std::pair elem) { return elem.second == value; } }; /** * @brief 给出Map中的Value反求对应的Key值的模板函数 * @param m 标准库map * @param v value值 * @return value值对应的Key值,如果map中不存在指定的value,则返回Key类型的缺省值 */ template K MapValueToKey(const Map& m, const V& v) { typename Map::const_iterator pos = std::find_if(m.begin(),m.end(), value_equals(v)); if (pos != m.end()) { return pos->first; } K defaultKeyValue; return defaultKeyValue; } #endif