Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

search
PrevUpHomeNext
Prototype

template<class ForwardRange1, class ForwardRange2>
typename range_iterator<ForwardRange1>::type
search(ForwardRange1& rng1, const ForwardRange2& rng2);

template<class ForwardRange1, class ForwardRange2>
typename range_iterator<const ForwardRange1>::type
search(const ForwardRange1& rng1, const ForwardRange2& rng2);

template<
    class ForwardRange1,
    class ForwardRange2,
    class BinaryPredicate
    >
typename range_iterator<ForwardRange1>::type,
search(ForwardRange1& rng1, const ForwardRange2& rng2, BinaryPredicate pred);

template<
    class ForwardRange1,
    class ForwardRange2,
    class BinaryPredicate
    >
typename range_iterator<const ForwardRange1>::type
search(const ForwardRange1& rng1, ForwardRange2& rng2, BinaryPredicate pred);


template<
    range_return_value re,
    class ForwardRange1,
    class ForwardRange2
    >
typename range_return<ForwardRange1, re>::type
search(ForwardRange1& rng1, const ForwardRange2& rng2);

template<
    range_return_value re,
    class ForwardRange1,
    class ForwardRange2
    >
typename range_return<const ForwardRange1, re>::type
search(const ForwardRange1& rng1, const ForwardRange2& rng2);

template<
    range_return_value re,
    class ForwardRange1,
    class ForwardRange2,
    class BinaryPredicate
    >
typename range_return<ForwardRange1, re>::type,
search(ForwardRange1& rng1, const ForwardRange2& rng2, BinaryPredicate pred);

template<
    range_return_value re,
    class ForwardRange1,
    class ForwardRange2,
    class BinaryPredicate
    >
typename range_return<const ForwardRange1, re>::type
search(const ForwardRange1& rng1, const ForwardRange2& rng2, BinaryPredicate pred);

Description

The versions of search that return an iterator, return an iterator to the start of the first subsequence in rng1 that is equal to the subsequence rng2. The end(rng1) is returned if no such subsequence exists in rng1. Equality is determined by operator== for non-predicate versions of search, and by satisfying pred in the predicate versions.

The versions of search that return a range_return, defines found in the same manner as the returned iterator described above.

Definition

Defined in the header file boost/range/algorithm/search.hpp

Requirements

For the non-predicate versions:

  • ForwardRange1 is a model of the Forward Range Concept.
  • ForwardRange2 is a model of the Forward Range Concept.
  • ForwardRange1's value type is a model of the EqualityComparableConcept.
  • ForwardRange2's value type is a model of the EqualityComparableConcept.
  • ForwardRange1s value type can be compared for equality with ForwardRange2's value type.

For the predicate versions:

  • ForwardRange1 is a model of the Forward Range Concept.
  • ForwardRange2 is a model of the Forward Range Concept.
  • BinaryPredicate is a model of the BinaryPredicateConcept.
  • ForwardRange1's value type is convertible to BinaryPredicate's first argument type.
  • ForwardRange2's value type is convertible to BinaryPredicate's second argument type.
Complexity

Average complexity is Linear. Worst-case complexity is quadratic.


PrevUpHomeNext