Defined in header <algorithm> | ||
|---|---|---|
| (1) | ||
template< class InputIt1, class InputIt2 >
std::pair<InputIt1, InputIt2>
mismatch( InputIt1 first1, InputIt1 last1,
InputIt2 first2 );
| (until C++20) | |
template< class InputIt1, class InputIt2 >
constexpr std::pair<InputIt1, InputIt2>
mismatch( InputIt1 first1, InputIt1 last1,
InputIt2 first2 );
| (since C++20) | |
template< class ExecutionPolicy, class ForwardIt1, class ForwardIt2 >
std::pair<ForwardIt1, ForwardIt2>
mismatch( ExecutionPolicy&& policy, ForwardIt1 first1, ForwardIt1 last1,
ForwardIt2 first2 );
| (2) | (since C++17) |
| (3) | ||
template< class InputIt1, class InputIt2, class BinaryPredicate >
std::pair<InputIt1, InputIt2>
mismatch( InputIt1 first1, InputIt1 last1,
InputIt2 first2,
BinaryPredicate p );
| (until C++20) | |
template< class InputIt1, class InputIt2, class BinaryPredicate >
constexpr std::pair<InputIt1, InputIt2>
mismatch( InputIt1 first1, InputIt1 last1,
InputIt2 first2,
BinaryPredicate p );
| (since C++20) | |
template< class ExecutionPolicy, class ForwardIt1, class ForwardIt2,
class BinaryPredicate >
std::pair<ForwardIt1, ForwardIt2>
mismatch( ExecutionPolicy&& policy, ForwardIt1 first1, ForwardIt1 last1,
ForwardIt2 first2,
BinaryPredicate p );
| (4) | (since C++17) |
| (5) | ||
template< class InputIt1, class InputIt2 >
std::pair<InputIt1, InputIt2>
mismatch( InputIt1 first1, InputIt1 last1,
InputIt2 first2, InputIt2 last2 );
| (since C++14) (until C++20) | |
template< class InputIt1, class InputIt2 >
constexpr std::pair<InputIt1, InputIt2>
mismatch( InputIt1 first1, InputIt1 last1,
InputIt2 first2, InputIt2 last2 );
| (since C++20) | |
template< class ExecutionPolicy, class ForwardIt1, class ForwardIt2 >
std::pair<ForwardIt1, ForwardIt2>
mismatch( ExecutionPolicy&& policy, ForwardIt1 first1, ForwardIt1 last1,
ForwardIt2 first2, ForwardIt2 last2 );
| (6) | (since C++17) |
| (7) | ||
template< class InputIt1, class InputIt2, class BinaryPredicate >
std::pair<InputIt1, InputIt2>
mismatch( InputIt1 first1, InputIt1 last1,
InputIt2 first2, InputIt2 last2,
BinaryPredicate p );
| (since C++14) (until C++20) | |
template< class InputIt1, class InputIt2, class BinaryPredicate >
constexpr std::pair<InputIt1, InputIt2>
mismatch( InputIt1 first1, InputIt1 last1,
InputIt2 first2, InputIt2 last2,
BinaryPredicate p );
| (since C++20) | |
template< class ExecutionPolicy, class ForwardIt1, class ForwardIt2,
class BinaryPredicate >
std::pair<ForwardIt1, ForwardIt2>
mismatch( ExecutionPolicy&& policy, ForwardIt1 first1, ForwardIt1 last1,
ForwardIt2 first2, ForwardIt2 last2,
BinaryPredicate p );
| (8) | (since C++17) |
Returns the first mismatching pair of elements from two ranges: one defined by [first1, last1) and another defined by [first2, last2). If last2 is not provided (overloads (1-4)), it denotes first2 + (last1 - first1).
operator==.p.policy. These overloads do not participate in overload resolution unless |
| (until C++20) |
|
| (since C++20) |
| first1, last1 | - | the first range of the elements |
| first2, last2 | - | the second range of the elements |
| policy | - | the execution policy to use. See execution policy for details. |
| p | - | binary predicate which returns true if the elements should be treated as equal. The signature of the predicate function should be equivalent to the following:
While the signature does not need to have |
| Type requirements | ||
-InputIt1 must meet the requirements of LegacyInputIterator. |
||
-InputIt2 must meet the requirements of LegacyInputIterator. |
||
-ForwardIt1 must meet the requirements of LegacyForwardIterator. |
||
-ForwardIt2 must meet the requirements of LegacyForwardIterator. |
||
-BinaryPredicate must meet the requirements of BinaryPredicate. |
||
std::pair with iterators to the first two non-equal elements.
| If no mismatches are found when the comparison reaches | (until C++14) |
| If no mismatches are found when the comparison reaches | (since C++14) |
last1 - first1 applications of operator== or the predicate p
std::min(last1 - first1, last2 - first2) applications of operator== or the predicate p.The overloads with a template parameter named ExecutionPolicy report errors as follows:
ExecutionPolicy is one of the standard policies, std::terminate is called. For any other ExecutionPolicy, the behavior is implementation-defined. std::bad_alloc is thrown. | mismatch (1) |
|---|
template<class InputIt1, class InputIt2>
std::pair<InputIt1, InputIt2>
mismatch(InputIt1 first1, InputIt1 last1, InputIt2 first2)
{
while (first1 != last1 && *first1 == *first2)
++first1, ++first2;
return std::make_pair(first1, first2);
} |
| mismatch (3) |
template<class InputIt1, class InputIt2, class BinaryPredicate>
std::pair<InputIt1, InputIt2>
mismatch(InputIt1 first1, InputIt1 last1, InputIt2 first2, BinaryPredicate p)
{
while (first1 != last1 && p(*first1, *first2))
++first1, ++first2;
return std::make_pair(first1, first2);
} |
| mismatch (5) |
template<class InputIt1, class InputIt2>
std::pair<InputIt1, InputIt2>
mismatch(InputIt1 first1, InputIt1 last1, InputIt2 first2, InputIt2 last2)
{
while (first1 != last1 && first2 != last2 && *first1 == *first2)
++first1, ++first2;
return std::make_pair(first1, first2);
} |
| mismatch (7) |
template<class InputIt1, class InputIt2, class BinaryPredicate>
std::pair<InputIt1, InputIt2>
mismatch(InputIt1 first1, InputIt1 last1,
InputIt2 first2, InputIt2 last2, BinaryPredicate p)
{
while (first1 != last1 && first2 != last2 && p(*first1, *first2))
++first1, ++first2;
return std::make_pair(first1, first2);
} |
This program determines the longest substring that is simultaneously found at the very beginning of the given string and at the very end of it, in reverse order (possibly overlapping).
#include <algorithm>
#include <iostream>
#include <string>
std::string mirror_ends(const std::string& in)
{
return std::string(in.begin(),
std::mismatch(in.begin(), in.end(), in.rbegin()).first);
}
int main()
{
std::cout << mirror_ends("abXYZba") << '\n'
<< mirror_ends("abca") << '\n'
<< mirror_ends("aba") << '\n';
}Output:
ab a aba
| determines if two sets of elements are the same (function template) |
|
|
(C++11) | finds the first element satisfying specific criteria (function template) |
returns true if one range is lexicographically less than another (function template) |
|
| searches for a range of elements (function template) |
|
|
(C++20) | finds the first position where two ranges differ (niebloid) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/algorithm/mismatch