• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1[/
2    Copyright 2010 Neil Groves
3    Distributed under the Boost Software License, Version 1.0.
4    (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
5/]
6[section:find_first_of find_first_of]
7
8[heading Prototype]
9
10``
11template<class SinglePassRange1, class ForwardRange2>
12typename range_iterator<SinglePassRange1>::type
13find_first_of(SinglePassRange1& rng1, const ForwardRange2& rng2);
14
15template<
16    class SinglePassRange1,
17    class ForwardRange2,
18    class BinaryPredicate
19    >
20typename range_iterator<SinglePassRange1>::type
21find_first_of(SinglePassRange1& rng1, const ForwardRange2& rng2, BinaryPredicate pred);
22
23template<
24    range_return_value re,
25    class SinglePassRange1,
26    class ForwardRange2
27    >
28typename range_return<SinglePassRange1, re>::type
29find_first_of(SinglePassRange1& rng1, const ForwardRange2& rng2);
30
31template<
32    range_return_value re,
33    class SinglePassRange1,
34    class ForwardRange2,
35    class BinaryPredicate
36    >
37typename range_return<SinglePassRange1, re>::type
38find_first_of(SinglePassRange1& rng1, const ForwardRange2& rng2, BinaryPredicate pred);
39``
40
41[heading Description]
42
43The versions of `find_first_of` that return an iterator, return an iterator to the first occurrence in `rng1` of any of the elements in `rng2`.
44Equality is determined by `operator==` for non-predicate versions of `find_first_of`, and by satisfying `pred` in the predicate versions.
45
46The versions of `find_first_of` that return a `range_return`, defines `found` in the same manner as the returned iterator described above.
47
48[heading Definition]
49
50Defined in the header file `boost/range/algorithm/find_first_of.hpp`
51
52[heading Requirements]
53
54[*For the non-predicate versions:]
55
56* `SinglePassRange1` is a model of the __single_pass_range__ Concept.
57* `ForwardRange2` is a model of the __forward_range__ Concept.
58* `SinglePassRange1`'s value type is a model of the `EqualityComparableConcept`, and can be compared for equality with `ForwardRange2`'s value type.
59
60[*For the predicate versions:]
61
62* `SinglePassRange1` is a model of the __single_pass_range__ Concept.
63* `ForwardRange2` is a model of the __forward_range__ Concept.
64* `BinaryPredicate` is a model of the `BinaryPredicateConcept`.
65* `SinglePassRange1`'s value type is convertible to `BinaryPredicate`'s first argument type.
66* `ForwardRange2`'s value type is convertible to `BinaryPredicate`'s second argument type.
67
68[heading Complexity]
69
70At most `distance(rng1) * distance(rng2)` comparisons.
71
72[endsect]
73
74
75