mismatch.qbk 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  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:mismatch mismatch]
  7. [heading Prototype]
  8. ``
  9. template<class SinglePassRange1, class SinglePassRange2>
  10. std::pair<
  11. typename range_iterator<SinglePassRange1>::type,
  12. typename range_iterator<const SinglePassRange2>::type >
  13. mismatch(SinglePassRange1& rng1, const SinglePassRange2& rng2);
  14. template<class SinglePassRange1, class SinglePassRange2>
  15. std::pair<
  16. typename range_iterator<const SinglePassRange1>::type,
  17. typename range_iterator<const SinglePassRange2>::type >
  18. mismatch(const SinglePassRange1& rng1, const SinglePassRange2& rng2);
  19. template<class SinglePassRange1, class SinglePassRange2>
  20. std::pair<
  21. typename range_iterator<SinglePassRange1>::type,
  22. typename range_iterator<SinglePassRange2>::type >
  23. mismatch(SinglePassRange1& rng1, SinglePassRange2& rng2);
  24. template<class SinglePassRange1, class SinglePassRange2>
  25. std::pair<
  26. typename range_iterator<const SinglePassRange1>::type,
  27. typename range_iterator<SinglePassRange2>::type >
  28. mismatch(const SinglePassRange1& rng1, SinglePassRange2& rng2);
  29. template<
  30. class SinglePassRange1,
  31. class SinglePassRange2,
  32. class BinaryPredicate
  33. >
  34. std::pair<
  35. typename range_iterator<SinglePassRange1>::type,
  36. typename range_iterator<const SinglePassRange2>::type >
  37. mismatch(SinglePassRange1& rng1, const SinglePassRange2& rng2,
  38. BinaryPredicate pred);
  39. template<
  40. class SinglePassRange1,
  41. class SinglePassRange2,
  42. class BinaryPredicate
  43. >
  44. std::pair<
  45. typename range_iterator<const SinglePassRange1>::type,
  46. typename range_iterator<const SinglePassRange2>::type >
  47. mismatch(const SinglePassRange1& rng1, const SinglePassRange2& rng2,
  48. BinaryPredicate pred);
  49. template<
  50. class SinglePassRange1,
  51. class SinglePassRange2,
  52. class BinaryPredicate
  53. >
  54. std::pair<
  55. typename range_iterator<SinglePassRange1>::type,
  56. typename range_iterator<SinglePassRange2>::type >
  57. mismatch(SinglePassRange1& rng1, SinglePassRange2& rng2,
  58. BinaryPredicate pred);
  59. template<
  60. class SinglePassRange1,
  61. class SinglePassRange2,
  62. class BinaryPredicate
  63. >
  64. std::pair<
  65. typename range_iterator<const SinglePassRange1>::type,
  66. typename range_iterator<SinglePassRange2>::type >
  67. mismatch(const SinglePassRange1& rng1, SinglePassRange2& rng2,
  68. BinaryPredicate pred);
  69. ``
  70. [heading Description]
  71. `mismatch` finds the first position where the corresponding elements from the two ranges `rng1` and `rng2` are not equal.
  72. Equality is determined by `operator==` for non-predicate versions of `mismatch`, and by satisfying `pred` in the predicate versions.
  73. [heading Definition]
  74. Defined in the header file `boost/range/algorithm/mismatch.hpp`
  75. [heading Requirements]
  76. [*For the non-predicate versions:]
  77. * `SinglePassRange1` is a model of the __single_pass_range__ Concept.
  78. * `SinglePassRange2` is a model of the __single_pass_range__ Concept.
  79. * `SinglePassRange1`'s value type is a model of the `EqualityComparableConcept`.
  80. * `SinglePassRange2`'s value type is a model of the `EqualityComparableConcept`.
  81. * `SinglePassRange1`s value type can be compared for equality with `SinglePassRange2`'s value type.
  82. [*For the predicate versions:]
  83. * `SinglePassRange1` is a model of the __single_pass_range__ Concept.
  84. * `SinglePassRange2` is a model of the __single_pass_range__ Concept.
  85. * `BinaryPredicate` is a model of the `BinaryPredicateConcept`.
  86. * `SinglePassRange1`'s value type is convertible to `BinaryPredicate`'s first argument type.
  87. * `SinglePassRange2`'s value type is convertible to `BinaryPredicate`'s second argument type.
  88. [heading Precondition:]
  89. `distance(rng2) >= distance(rng1)`
  90. [heading Complexity]
  91. Linear. At most `distance(rng1)` comparisons.
  92. [endsect]