Predicate Version of includes

Viene illustrato come utilizzare la versione di predicato della funzione della libreria di modelli (STL) standard di importa in Visual C++.

template<class InputIterator1, class InputIterator2, class Compare>
   inline bool includes(
      InputIterator1 First1,
      InputIterator1 Last1,
      InputIterator2 First2,
      InputIterator2 Last2,
      Compare Compare
   )

Note

[!NOTA]

La classe/nomi di parametro nel prototipo non corrisponde alla versione nel file di intestazione.alcuni sono stati modificati per migliorare la leggibilità.

importa l'algoritmo cerca una sequenza di valori in un'altra sequenza di valori.importa restituisce true se ogni elemento nell'intervallo [First2.Last2) nella sequenza [First1.Last1).Questa versione di importa presuppone che entrambi le sequenze siano ordinati utilizzando la funzione di confrontare .

Esempio

// 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

Requisiti

intestazione: <algoritmo>

Vedere anche

Concetti

Esempi di una libreria di modelli standard