includes
Sıralanan aralıkta bir ikili koşul öğeler arasındaki sıralamayı veya eşdeğerlik kriterleri burada belirtilebilir ikinci sıralanan aralıkta yer alan tüm öğeleri içeren olup olmadığını sınar.
template<class InputIterator1, class InputIterator2>
bool includes(
InputIterator1 _First1,
InputIterator1 _Last1,
InputIterator2 _First2,
InputIterator2 _Last1
);
template<class InputIterator1, class InputIterator2, class BinaryPredicate>
bool includes(
InputIterator1 _First1,
InputIterator1 _Last1,
InputIterator2 _First2,
InputIterator2 _Last1,
BinaryPredicate _Comp
);
_First1
İlk öğenin konumunu ikinci tüm öğeleri ilk yer alır için test edilecek ilk iki sıralı kaynak aralıklarının adresleme giriş Yineleyici._Last1
İkinci tüm öğeleri ilk yer alır için test edilecek konumunu bir son öğe geçmiş ilk iki sıralı kaynak aralığı adresleme giriş Yineleyici._First2
İki saniye içinde ilk öğenin konumunu adresleme giriş Yineleyici ikinci tüm öğeler olup olmadığını ilk içerdiği için test edilecek kaynak aralığı art arda sıralanmış._Last2
Giriş Yineleyici konumu geçmişte adresleme son öğenin art arda iki saniye içinde ikinci tüm öğeler olup olmadığını ilk içerdiği için test edilecek kaynak aralığı sıralanmış._Comp
Anlamlı bir öðe baþka birinden küçük olduğu tanımlayan kullanıcı tanımlı işlevin doðrulama nesnesi. İkili karşılaştırma iki baðýmsýz deðiþken alýr ve döner doğru memnun, ve yanlış tatmin olduğunda.
gerçek ilk sıralanan aralıkta ikinci sıralanan aralıkta; tüm öğeler içeriyorsa, Aksi takdirde, yanlış.
Bu sınama düşünmek başka bir ikinci kaynak aralığının bir alt kümesi ilk kaynak aralığı olup olmadığını belirledi, yoludur.
Başvurulan sıralanmış kaynak aralığı geçerli olması gerekir; Tüm işaretçiler dereferenceable ve her bir dizi içinde son konuma birinciden erişilebilir olmalı tarafından incrementation.
Aynı olarak sıralamaya uygun olarak bir önkoşulu algoritma uygulama içerir gibi aralıkları her düzenlenmelidir sıralanmış algoritmayla birleşik aralıkları sıralamak için kullanılmak üzere kaynağıdır.
Kaynak aralığı algoritması tarafından değiştirilmeyen birleştirme.
Giriş Yineleyicilerde değer türlerinin küçük olması-sipariþ edilmesi daha karşılaştırılabilir, verilen iki öğe, böylece onu eşdeğer (içinde her ikisi de diğer küçüktür anlam) ya da diğer daha az olduğunu belirlenebilir. Bu bir nonequivalent öğeleri sıralamada sonuçlanır. Daha hassas bir şekilde algoritma, belirtilen ikili yüklemi altında sıralanan ilk aralıktaki tüm öğeler bu ikinci sıralanan aralıkta eşdeğer sıralamaya sahip olup olmadığını sınar.
Algoritmanın karmaşıklığı en fazla 2 ile doğrusal * ((_Last1 – _First1) – (_Last2 – _First2)) – 1 karşılaştırmalar için boş olmayan kaynak aralığı.
// alg_includes.cpp
// compile with: /EHsc
#include <vector>
#include <algorithm>
#include <functional> // For greater<int>( )
#include <iostream>
// Return whether modulus of elem1 is less than modulus of elem2
bool mod_lesser (int elem1, int elem2 )
{
if ( elem1 < 0 )
elem1 = - elem1;
if ( elem2 < 0 )
elem2 = - elem2;
return elem1 < elem2;
}
int main( )
{
using namespace std;
vector <int> v1a, v1b;
vector <int>::iterator Iter1a, Iter1b;
// Constructing vectors v1a & v1b with default less-than ordering
int i;
for ( i = -2 ; i <= 4 ; i++ )
{
v1a.push_back( i );
}
int ii;
for ( ii =-2 ; ii <= 3 ; ii++ )
{
v1b.push_back( ii );
}
cout << "Original vector v1a with range sorted by the\n "
<< "binary predicate less than is v1a = ( " ;
for ( Iter1a = v1a.begin( ) ; Iter1a != v1a.end( ) ; Iter1a++ )
cout << *Iter1a << " ";
cout << ")." << endl;
cout << "Original vector v1b with range sorted by the\n "
<< "binary predicate less than is v1b = ( " ;
for ( Iter1b = v1b.begin ( ) ; Iter1b != v1b.end ( ) ; Iter1b++ )
cout << *Iter1b << " ";
cout << ")." << endl;
// Constructing vectors v2a & v2b with ranges sorted by greater
vector <int> v2a ( v1a ) , v2b ( v1b );
vector <int>::iterator Iter2a, Iter2b;
sort ( v2a.begin ( ) , v2a.end ( ) , greater<int> ( ) );
sort ( v2b.begin ( ) , v2b.end ( ) , greater<int> ( ) );
v2a.pop_back ( );
cout << "Original vector v2a with range sorted by the\n "
<< "binary predicate greater is v2a = ( " ;
for ( Iter2a = v2a.begin ( ) ; Iter2a != v2a.end ( ) ; Iter2a++ )
cout << *Iter2a << " ";
cout << ")." << endl;
cout << "Original vector v2b with range sorted by the\n "
<< "binary predicate greater is v2b = ( " ;
for ( Iter2b = v2b.begin ( ) ; Iter2b != v2b.end ( ) ; Iter2b++ )
cout << *Iter2b << " ";
cout << ")." << endl;
// Constructing vectors v3a & v3b with ranges sorted by mod_lesser
vector <int> v3a ( v1a ), v3b ( v1b ) ;
vector <int>::iterator Iter3a, Iter3b;
reverse (v3a.begin( ), v3a.end( ) );
v3a.pop_back ( );
v3a.pop_back ( );
sort ( v3a.begin ( ) , v3a.end ( ) , mod_lesser );
sort ( v3b.begin ( ) , v3b.end ( ) , mod_lesser );
cout << "Original vector v3a with range sorted by the\n "
<< "binary predicate mod_lesser is v3a = ( " ;
for ( Iter3a = v3a.begin ( ) ; Iter3a != v3a.end ( ) ; Iter3a++ )
cout << *Iter3a << " ";
cout << ")." << endl;
cout << "Original vector v3b with range sorted by the\n "
<< "binary predicate mod_lesser is v3b = ( " ;
for ( Iter3b = v3b.begin ( ) ; Iter3b != v3b.end ( ) ; Iter3b++ )
cout << *Iter3b << " ";
cout << ")." << endl;
// To test for inclusion under an asscending order
// with the default binary predicate less <int> ( )
bool Result1;
Result1 = includes ( v1a.begin ( ) , v1a.end ( ) ,
v1b.begin ( ) , v1b.end ( ) );
if ( Result1 )
cout << "All the elements in vector v1b are "
<< "contained in vector v1a." << endl;
else
cout << "At least one of the elements in vector v1b "
<< "is not contained in vector v1a." << endl;
// To test for inclusion under descending
// order specify binary predicate greater<int>( )
bool Result2;
Result2 = includes ( v2a.begin ( ) , v2a.end ( ) ,
v2b.begin ( ) , v2b.end ( ) , greater <int> ( ) );
if ( Result2 )
cout << "All the elements in vector v2b are "
<< "contained in vector v2a." << endl;
else
cout << "At least one of the elements in vector v2b "
<< "is not contained in vector v2a." << endl;
// To test for inclusion under a user
// defined binary predicate mod_lesser
bool Result3;
Result3 = includes ( v3a.begin ( ) , v3a.end ( ) ,
v3b.begin ( ) , v3b.end ( ) , mod_lesser );
if ( Result3 )
cout << "All the elements in vector v3b are "
<< "contained under mod_lesser in vector v3a."
<< endl;
else
cout << "At least one of the elements in vector v3b is "
<< " not contained under mod_lesser in vector v3a."
<< endl;
}
Başlık: <algorithm>
Namespace: std