search.qbk 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  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:search search]
  7. [heading Prototype]
  8. ``
  9. template<class ForwardRange1, class ForwardRange2>
  10. typename range_iterator<ForwardRange1>::type
  11. search(ForwardRange1& rng1, const ForwardRange2& rng2);
  12. template<class ForwardRange1, class ForwardRange2>
  13. typename range_iterator<const ForwardRange1>::type
  14. search(const ForwardRange1& rng1, const ForwardRange2& rng2);
  15. template<
  16. class ForwardRange1,
  17. class ForwardRange2,
  18. class BinaryPredicate
  19. >
  20. typename range_iterator<ForwardRange1>::type,
  21. search(ForwardRange1& rng1, const ForwardRange2& rng2, BinaryPredicate pred);
  22. template<
  23. class ForwardRange1,
  24. class ForwardRange2,
  25. class BinaryPredicate
  26. >
  27. typename range_iterator<const ForwardRange1>::type
  28. search(const ForwardRange1& rng1, ForwardRange2& rng2, BinaryPredicate pred);
  29. template<
  30. range_return_value re,
  31. class ForwardRange1,
  32. class ForwardRange2
  33. >
  34. typename range_return<ForwardRange1, re>::type
  35. search(ForwardRange1& rng1, const ForwardRange2& rng2);
  36. template<
  37. range_return_value re,
  38. class ForwardRange1,
  39. class ForwardRange2
  40. >
  41. typename range_return<const ForwardRange1, re>::type
  42. search(const ForwardRange1& rng1, const ForwardRange2& rng2);
  43. template<
  44. range_return_value re,
  45. class ForwardRange1,
  46. class ForwardRange2,
  47. class BinaryPredicate
  48. >
  49. typename range_return<ForwardRange1, re>::type,
  50. search(ForwardRange1& rng1, const ForwardRange2& rng2, BinaryPredicate pred);
  51. template<
  52. range_return_value re,
  53. class ForwardRange1,
  54. class ForwardRange2,
  55. class BinaryPredicate
  56. >
  57. typename range_return<const ForwardRange1, re>::type
  58. search(const ForwardRange1& rng1, const ForwardRange2& rng2, BinaryPredicate pred);
  59. ``
  60. [heading Description]
  61. 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`.
  62. Equality is determined by `operator==` for non-predicate versions of `search`, and by satisfying `pred` in the predicate versions.
  63. The versions of `search` that return a `range_return`, defines `found` in the same manner as the returned iterator described above.
  64. [heading Definition]
  65. Defined in the header file `boost/range/algorithm/search.hpp`
  66. [heading Requirements]
  67. [*For the non-predicate versions:]
  68. * `ForwardRange1` is a model of the __forward_range__ Concept.
  69. * `ForwardRange2` is a model of the __forward_range__ Concept.
  70. * `ForwardRange1`'s value type is a model of the `EqualityComparableConcept`.
  71. * `ForwardRange2`'s value type is a model of the `EqualityComparableConcept`.
  72. * `ForwardRange1`s value type can be compared for equality with `ForwardRange2`'s value type.
  73. [*For the predicate versions:]
  74. * `ForwardRange1` is a model of the __forward_range__ Concept.
  75. * `ForwardRange2` is a model of the __forward_range__ Concept.
  76. * `BinaryPredicate` is a model of the `BinaryPredicateConcept`.
  77. * `ForwardRange1`'s value type is convertible to `BinaryPredicate`'s first argument type.
  78. * `ForwardRange2`'s value type is convertible to `BinaryPredicate`'s second argument type.
  79. [heading Complexity]
  80. Average complexity is Linear. Worst-case complexity is quadratic.
  81. [endsect]