root / tmp / org.txm.statsengine.r.core.win32 / res / win32 / library / BH / include / boost / algorithm / cxx11 / is_partitioned.hpp @ 2486
History  View  Annotate  Download (2 kB)
1 
/*


2 
Copyright (c) Marshall Clow 20112012.

3 

4 
Distributed under the Boost Software License, Version 1.0. (See accompanying

5 
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

6 
*/

7  
8 
/// \file is_partitioned.hpp

9 
/// \brief Tell if a sequence is partitioned

10 
/// \author Marshall Clow

11  
12 
#ifndef BOOST_ALGORITHM_IS_PARTITIONED_HPP

13 
#define BOOST_ALGORITHM_IS_PARTITIONED_HPP

14  
15 
#include <algorithm> // for std::is_partitioned, if available 
16  
17 
#include <boost/range/begin.hpp> 
18 
#include <boost/range/end.hpp> 
19  
20 
namespace boost { namespace algorithm { 
21  
22 
/// \fn is_partitioned ( InputIterator first, InputIterator last, UnaryPredicate p )

23 
/// \brief Tests to see if a sequence is partitioned according to a predicate

24 
///

25 
/// \param first The start of the input sequence

26 
/// \param last One past the end of the input sequence

27 
/// \param p The predicate to test the values with

28 
/// \note This function is part of the C++2011 standard library.

29 
/// We will use the standard one if it is available,

30 
/// otherwise we have our own implementation.

31 
template <typename InputIterator, typename UnaryPredicate> 
32 
bool is_partitioned ( InputIterator first, InputIterator last, UnaryPredicate p )

33 
{ 
34 
// Run through the part that satisfy the predicate

35 
for ( ; first != last; ++first )

36 
if ( !p (*first))

37 
break;

38 
// Now the part that does not satisfy the predicate

39 
for ( ; first != last; ++first )

40 
if ( p (*first))

41 
return false; 
42 
return true; 
43 
} 
44  
45 
/// \fn is_partitioned ( const Range &r, UnaryPredicate p )

46 
/// \brief Generates an increasing sequence of values, and stores them in the input Range.

47 
///

48 
/// \param r The input range

49 
/// \param p The predicate to test the values with

50 
///

51 
template <typename Range, typename UnaryPredicate> 
52 
bool is_partitioned ( const Range &r, UnaryPredicate p ) 
53 
{ 
54 
return boost::algorithm::is_partitioned (boost::begin(r), boost::end(r), p);

55 
} 
56  
57  
58 
}} 
59  
60 
#endif // BOOST_ALGORITHM_IS_PARTITIONED_HPP 