diff options
author | Lorry Tar Creator <lorry-tar-importer@baserock.org> | 2013-06-25 22:59:01 +0000 |
---|---|---|
committer | <> | 2013-09-27 11:49:28 +0000 |
commit | 8c4528713d907ee2cfd3bfcbbad272c749867f84 (patch) | |
tree | c09e2ce80f47b90c85cc720f5139089ad9c8cfff /libs/algorithm/doc/none_of.qbk | |
download | boost-tarball-baserock/morph.tar.gz |
Imported from /home/lorry/working-area/delta_boost-tarball/boost_1_54_0.tar.bz2.boost_1_54_0baserock/morph
Diffstat (limited to 'libs/algorithm/doc/none_of.qbk')
-rw-r--r-- | libs/algorithm/doc/none_of.qbk | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/libs/algorithm/doc/none_of.qbk b/libs/algorithm/doc/none_of.qbk new file mode 100644 index 000000000..3cda5f952 --- /dev/null +++ b/libs/algorithm/doc/none_of.qbk @@ -0,0 +1,90 @@ +[/ File none_of.qbk] + +[section:none_of none_of] + +[/license +Copyright (c) 2010-2012 Marshall Clow + +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) +] + +The header file 'boost/algorithm/cxx11/none_of.hpp' contains four variants of a single algorithm, `none_of`. The algorithm tests all the elements of a sequence and returns true if they none of them share a property. + +The routine `none_of` takes a sequence and a predicate. It will return true if the predicate returns false when applied to every element in the sequence. + +The routine `none_of_equal` takes a sequence and a value. It will return true if none of the elements in the sequence compare equal to the passed in value. + +Both routines come in two forms; the first one takes two iterators to define the range. The second form takes a single range parameter, and uses Boost.Range to traverse it. + + +[heading interface] + +The function `none_of` returns true if the predicate returns false for every item in the sequence. There are two versions; one takes two iterators, and the other takes a range. + +`` +namespace boost { namespace algorithm { +template<typename InputIterator, typename Predicate> + bool none_of ( InputIterator first, InputIterator last, Predicate p ); +template<typename Range, typename Predicate> + bool none_of ( const Range &r, Predicate p ); +}} +`` + +The function `none_of_equal` is similar to `none_of`, but instead of taking a predicate to test the elements of the sequence, it takes a value to compare against. + +`` +namespace boost { namespace algorithm { +template<typename InputIterator, typename V> + bool none_of_equal ( InputIterator first, InputIterator last, V const &val ); +template<typename Range, typename V> + bool none_of_equal ( const Range &r, V const &val ); +}} +`` + +[heading Examples] + +Given the container `c` containing `{ 0, 1, 2, 3, 14, 15 }`, then +`` +bool isOdd ( int i ) { return i % 2 == 1; } +bool lessThan10 ( int i ) { return i < 10; } + +using boost::algorithm; + +none_of ( c, isOdd ) --> false +none_of ( c.begin (), c.end (), lessThan10 ) --> false +none_of ( c.begin () + 4, c.end (), lessThan10 ) --> true +none_of ( c.end (), c.end (), isOdd ) --> true // empty range +none_of_equal ( c, 3 ) --> false +none_of_equal ( c.begin (), c.begin () + 3, 3 ) --> true +none_of_equal ( c.begin (), c.begin (), 99 ) --> true // empty range +`` + +[heading Iterator Requirements] + +`none_of` and `none_of_equal` work on all iterators except output iterators. + +[heading Complexity] + +All of the variants of `none_of` and `none_of_equal` run in ['O(N)] (linear) time; that is, they compare against each element in the list once. If any of the comparisons succeed, the algorithm will terminate immediately, without examining the remaining members of the sequence. + +[heading Exception Safety] + +All of the variants of `none_of` and `none_of_equal` take their parameters by value or const reference, and do not depend upon any global state. Therefore, all the routines in this file provide the strong exception guarantee. + +[heading Notes] + +* The routine `none_of` is part of the C++11 standard. When compiled using a C++11 implementation, the implementation from the standard library will be used. + +* `none_of` and `none_of_equal` both return true for empty ranges, no matter what is passed to test against. + +* The second parameter to `none_of_value` is a template parameter, rather than deduced from the first parameter (`std::iterator_traits<InputIterator>::value_type`) because that allows more flexibility for callers, and takes advantage of built-in comparisons for the type that is pointed to by the iterator. The function is defined to return true if, for all elements in the sequence, the expression `*iter == val` evaluates to false (where `iter` is an iterator to each element in the sequence) + +[endsect] + +[/ File none_of.qbk +Copyright 2011 Marshall Clow +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). +] + |