- 论坛徽章:
- 1
|
本帖最后由 lost_templar 于 2014-04-25 20:46 编辑
std::adjacent_find- template< typename Itor >
- bool is_in_order( Itor begin, Itor end )
- {
- if ( std::distance( begin, end ) < 3 ) return true;
- typedef typename std::iterator_traits<Itor>::value_type value_type;
- if ( *begin < *(begin+1) )
- return end == std::adjacent_find( begin, end, []( value_type const& lhs, value_type const& rhs ){ return lhs >= rhs; } );
- if ( *begin > *(begin+1) )
- return end == std::adjacent_find( begin, end, []( value_type const& lhs, value_type const& rhs ){ return lhs <= rhs; } );
- return is_in_order( begin+1, end );
- }
复制代码 徒手写的,没有测试 |
|