Predicate Version of includes
Muestra cómo utilizar la versión del predicado de la función de biblioteca de (STL) plantillas estándar de incluye en Visual C++.
template<class InputIterator1, class InputIterator2, class Compare>
inline bool includes(
InputIterator1 First1,
InputIterator1 Last1,
InputIterator2 First2,
InputIterator2 Last2,
Compare Compare
)
Comentarios
[!NOTA]
La clase y los nombres de parámetro en el prototipo no coincide con la versión del archivo de encabezado.Algunos se han modificado para mejorar la legibilidad.
Las búsquedas del algoritmo de incluye para una secuencia de valores en otra secuencia de valores.incluye devuelve TRUE si cada elemento en el intervalo [First2.Last2) está en la secuencia [First1.Last1).Esta versión de incluye supone que las dos secuencias están ordenadas mediante la función de compare .
Ejemplo
// includesPV.cpp
// compile with: /EHsc
//
// Illustrates how to use the predicate version of
// includes function.
//
// Functions:
// includes - Search for one sequence in another.
// string_compare - Compare strings, return true if
// s1 < s2.
// disable warning C4786: symbol greater than 255 character,
// okay to ignore
#pragma warning(disable: 4786)
#include <iostream>
#include <algorithm>
#include <functional>
#include <string>
#include <vector>
#include <deque>
using namespace std ;
bool string_compare(const string& s1, const string& s2)
{
return s1 < s2 ? 1 : 0;
}
int main()
{
const int VECTOR_SIZE = 5 ;
// Define a template class vector of strings
typedef vector<string> StringVector ;
//Define an iterator for template class vector of strings
typedef StringVector::iterator StringVectorIt ;
// Define a template class deque of strings
typedef deque<string> StringDeque ;
//Define an iterator for template class deque of strings
typedef StringDeque::iterator StringDequeIt ;
StringVector CartoonVector(VECTOR_SIZE) ;
StringDeque CartoonDeque ;
StringVectorIt start1, end1, it1 ;
StringDequeIt start2, end2, it2 ;
// Initialize vector Vector1
CartoonVector[0] = "Aladdin" ;
CartoonVector[1] = "Jasmine" ;
CartoonVector[2] = "Mickey" ;
CartoonVector[3] = "Minnie" ;
CartoonVector[4] = "Goofy" ;
start1 = CartoonVector.begin() ; // location of first
// element of CartoonVector
end1 = CartoonVector.end() ; // one past the location last
// element of CartoonVector
//Initialize list CartoonDeque
CartoonDeque.push_back("Jasmine") ;
CartoonDeque.push_back("Aladdin") ;
CartoonDeque.push_back("Goofy") ;
start2 = CartoonDeque.begin() ; // location of first
// element of CartoonDeque
end2 = CartoonDeque.end() ; // one past the location last
// element of CartoonDeque
//sort CartoonVector and CartoonDeque alphabetically
//includes requires the sequences
//to be sorted.
sort(start1, end1, string_compare) ;
sort(start2, end2, string_compare) ;
// print contents of CartoonVector and CartoonDeque
cout << "CartoonVector { " ;
for(it1 = start1; it1 != end1; it1++)
cout << *it1 << ", " ;
cout << " }\n" << endl ;
cout << "CartoonDeque { " ;
for(it2 = start2; it2 != end2; it2++)
cout << *it2 << ", " ;
cout << " }\n" << endl ;
//Is CartoonDeque a subset of CartoonVector?
if(includes(start1, end1, start2, end2, string_compare) )
cout << "CartoonVector includes CartoonDeque"
<< endl ;
else
cout << "CartoonVector does not include CartoonDeque"
<< endl ;
}
Output
CartoonVector { Aladdin, Goofy, Jasmine, Mickey, Minnie, }
CartoonDeque { Aladdin, Goofy, Jasmine, }
CartoonVector includes CartoonDeque
Requisitos
encabezado: <algoritmo>