std::mismatch
Aus cppreference.com
|
|
This page has been machine-translated from the English version of the wiki using Google Translate.
The translation may contain errors and awkward wording. Hover over text to see the original version. You can help to fix errors and improve the translation. For instructions click here. |
<metanoindex/>
<tbody> </tbody>| definiert in Header <algorithm>
|
||
template< class InputIt1, class InputIt2 > std::pair<InputIt1,InputIt2> mismatch( InputIt1 first1, InputIt1 last1, InputIt2 first2 ); |
(1) | |
template< class InputIt1, class InputIt2, class BinaryPredicate > std::pair<InputIt1,InputIt2> mismatch( InputIt1 first1, InputIt1 last1, InputIt2 first2, BinaryPredicate p ); |
(2) | |
Gibt das erste Fehlanpassung Paar von Elementen aus zwei Bereichen: einer nach
[first1, last1) und anderen ab first2 definiert. Die erste Version der Funktion verwendet operator==, um die Elemente zu vergleichen, nutzt die zweite Version der gegebenen binäres Prädikat p . Original:
Returns the first mismatching pair of elements from two ranges: one defined by
[first1, last1) and another starting at first2. The first version of the function uses operator== to compare the elements, the second version uses the given binary predicate p. The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
Parameter
| first1, last1 | - | der erste Bereich von den Elementen
Original: the first range of the elements The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
| first2 | - | der Beginn der zweiten Reihe der Elemente
Original: the beginning of the second range of the elements The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
| 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:
The signature does not need to have |
| Type requirements | ||
-InputIt1 must meet the requirements of InputIterator.
| ||
-InputIt2 must meet the requirements of InputIterator.
| ||
-OutputIt must meet the requirements of OutputIterator.
| ||
Rückgabewert
std::pair mit Iteratoren zu den ersten beiden antivalenten Elemente, oder, wenn keine anderen Elemente vorhanden, Paar mit
last1 und dem entsprechenden Iterator von dem zweiten Bereich .Original:
std::pair with iterators to the first two non-equivalent elements, or, if no different elements found, pair with
last1 and the corresponding iterator from the second range.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
Komplexität
An den meisten
last1 - first1 Anwendungen des PrädikatsOriginal:
At most
last1 - first1 applications of the predicateThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
Mögliche Implementierung
| First version |
|---|
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);
}
|
| Second version |
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);
}
|
Beispiel
Dieses Programm ermittelt die die längste Teilstring, die gleichzeitig am Anfang des übergebenen String und ganz am Ende der es gefunden wird, in umgekehrter Reihenfolge (möglicherweise überschneidenden)
Original:
This program determines the 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)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
#include <iostream>
#include <string>
#include <algorithm>
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
Siehe auch
| Bestimmt, ob zwei Sätze von Elementen gleich sind (Funktions-Template) | |
(C++11) |
Findet das erste Elemente, welches bestimmte Kriterien erfüllt (Funktions-Template) |
wahr, wenn ein Bereich ist lexikographisch kleiner als der andere Original: returns true if one range is lexicographically less than another The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (Funktions-Template) | |
| searches for a range of elements (Funktions-Template) | |