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 + -
显示快捷键?