predicate.hpp

来自「Boost provides free peer-reviewed portab」· HPP 代码 · 共 78 行

HPP
78
字号
//  Boost string_algo library predicate.hpp header file  ---------------------------////  Copyright Pavol Droba 2002-2003.//// Distributed under the Boost Software License, Version 1.0.//    (See accompanying file LICENSE_1_0.txt or copy at//          http://www.boost.org/LICENSE_1_0.txt)//  See http://www.boost.org/ for updates, documentation, and revision history.#ifndef BOOST_STRING_PREDICATE_DETAIL_HPP#define BOOST_STRING_PREDICATE_DETAIL_HPP#include <iterator>#include <boost/algorithm/string/find.hpp>namespace boost {    namespace algorithm {        namespace detail {//  ends_with predicate implementation ----------------------------------//            template<                 typename ForwardIterator1T,                 typename ForwardIterator2T,                typename PredicateT>            inline bool ends_with_iter_select(                 ForwardIterator1T Begin,                 ForwardIterator1T End,                 ForwardIterator2T SubBegin,                ForwardIterator2T SubEnd,                PredicateT Comp,                std::bidirectional_iterator_tag)            {                ForwardIterator1T it=End;                ForwardIterator2T pit=SubEnd;                for(;it!=Begin && pit!=SubBegin;)                {                    if( !(Comp(*(--it),*(--pit))) )                        return false;                }                return pit==SubBegin;            }            template<                 typename ForwardIterator1T,                 typename ForwardIterator2T,                typename PredicateT>            inline bool ends_with_iter_select(                 ForwardIterator1T Begin,                 ForwardIterator1T End,                 ForwardIterator2T SubBegin,                ForwardIterator2T SubEnd,                PredicateT Comp,                std::forward_iterator_tag)            {                if ( SubBegin==SubEnd )                {                    // empty subsequence check                    return true;                }                iterator_range<ForwardIterator1T> Result                    =last_finder(                         make_iterator_range(SubBegin, SubEnd),                        Comp)(Begin, End);                return !Result.empty() && Result.end()==End;            }        } // namespace detail    } // namespace algorithm} // namespace boost#endif  // BOOST_STRING_PREDICATE_DETAIL_HPP

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?