equal
Vergleicht das Element mit zwei Bereichen durch Element entweder für die Gleichheit oder Äquivalenz auf eine Weise, die von ein binäres Prädikat angegeben werden.
template<class InputIterator1, class InputIterator2>
bool equal(
InputIterator1 _First1,
InputIterator1 _Last1,
InputIterator2 _First2
);
template<class InputIterator1, class InputIterator2, class BinaryPredicate>
bool equal(
InputIterator1 _First1,
InputIterator1 _Last1,
InputIterator2 _First2,
BinaryPredicate _Comp
);
Parameter
_First1
Ein Eingabeiterator, der die Position des ersten Elements im ersten Bereich behandelt getestet werden._Last1
Ein Eingabeiterator, der die Position eine hinter dem letzten Element im ersten Bereich behandelt getestet werden._First2
Ein Eingabeiterator, der die Position des ersten Elements im zweiten Bereich behandelt getestet werden._Comp
Benutzerdefiniertes Prädikatfunktionsobjekt, das die erfüllt werden definiert Bedingung, wenn zwei Elemente als Entsprechung ausgeführt werden sollen. Ein binärer Prädikat akzeptiert zwei Argumente und gibt bei Erfüllung true zurück und false, wenn es nicht erfüllt wird.
Rückgabewert
true und wenn nur die Bereiche identisch oder unter dem binären Prädikat wenn verglichenes Element durch Element entsprechen; andernfalls false.
Hinweise
Der zu durchsuchenden Bereich muss gültig sein; alle Zeiger müssen dereferenzierbar sein und die letzte Position befindet der ersten von Zunahme erreichbar.
Die Zeitkomplexität des Algorithmus ist in der Anzahl von Elementen linear, die im Bereich enthalten sind.
operator==, das verwendet wird, um die Gleichheit zwischen Elementen zu bestimmen, muss eine Äquivalenzrelation zwischen den Operanden verlangen.
Beispiel
// alg_equal.cpp
// compile with: /EHsc
#include <vector>
#include <algorithm>
#include <iostream>
// Return whether second element is twice the first
bool twice ( int elem1, int elem2 )
{
return elem1 * 2 == elem2;
}
int main( )
{
using namespace std;
vector <int> v1, v2, v3;
vector <int>::iterator Iter1, Iter2, Iter3;
int i;
for ( i = 0 ; i <= 5 ; i++ )
{
v1.push_back( 5 * i );
}
int ii;
for ( ii = 0 ; ii <= 5 ; ii++ )
{
v2.push_back( 5 * ii );
}
int iii;
for ( iii = 0 ; iii <= 5 ; iii++ )
{
v3.push_back( 10 * iii );
}
cout << "v1 = ( " ;
for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
cout << *Iter1 << " ";
cout << ")" << endl;
cout << "v2 = ( " ;
for ( Iter2 = v2.begin( ) ; Iter2 != v2.end( ) ; Iter2++ )
cout << *Iter2 << " ";
cout << ")" << endl;
cout << "v3 = ( " ;
for ( Iter3 = v3.begin( ) ; Iter3 != v3.end( ) ; Iter3++ )
cout << *Iter3 << " ";
cout << ")" << endl;
// Testing v1 and v2 for equality under identity
bool b;
b = equal( v1.begin( ), v1.end( ), v2.begin( ) );
if ( b )
cout << "The vectors v1 and v2 are equal under equality."
<< endl;
else
cout << "The vectors v1 and v2 are not equal under equality."
<< endl;
// Testing v1 and v3 for equality under identity
bool c;
c = equal( v1.begin( ), v1.end( ), v3.begin( ) );
if ( c )
cout << "The vectors v1 and v3 are equal under equality."
<< endl;
else
cout << "The vectors v1 and v3 are not equal under equality."
<< endl;
// Testing v1 and v3 for equality under twice
bool d;
d = equal( v1.begin( ), v1.end( ), v3.begin( ), twice );
if ( d )
cout << "The vectors v1 and v3 are equal under twice."
<< endl;
else
cout << "The vectors v1 and v3 are not equal under twice."
<< endl;
}
Anforderungen
Header: <algorithm>
Namespace: std