partial_sort_copy

Copie des éléments d'une plage source dans un intervalle de destination dans lequel les éléments sources sont classés par un inférieure ou un attribut binaire spécifié différent.

template<class InputIterator, class RandomAccessIterator>
   RandomAccessIterator partial_sort_copy(
      InputIterator _First1, 
      InputIterator _Last1,
      RandomAccessIterator _First2, 
      RandomAccessIterator _Last2
   );
template<class InputIterator, class RandomAccessIterator, class BinaryPredicate>
   RandomAccessIterator partial_sort_copy(
      InputIterator _First1, 
      InputIterator _Last1,
      RandomAccessIterator _First2, 
      RandomAccessIterator _Last2,
      BinaryPredicate _Comp
   );

Paramètres

  • _First1
    Un itérateur d'entrée adressant la position du premier élément de la plage source.

  • _Last1
    Un itérateur d'entrée adressant une position au delà de le dernier élément dans la plage source.

  • _First2
    Un itérateur d'accès aléatoire adressant la position du premier élément de la plage trié de destination.

  • _Last2
    Un itérateur d'accès aléatoire adressant une position au delà de le dernier élément dans la plage trié de destination.

  • _Comp
    Objet défini par l'utilisateur de fonction de prédicat qui définit la condition à satisfaire si deux éléments doivent être pris comme équivalents.Un attribut binaire accepte deux arguments et retourne true si satisfaite et false une fois pas de contenu.

Valeur de retour

Un itérateur d'accès aléatoire adressant l'élément en position de l'intervalle un de destination au delà de le dernier élément inséré de la plage source.

Notes

La source et les intervalles de destination ne doivent pas se chevaucher et doivent être valides ; tous les pointeurs doivent être deréférençables et dans chaque séquence la dernière position doit être accessible dès le début par l'augmentation.

L'attribut binaire doit fournir l'ordre strict faible afin que les éléments qui ne sont pas identiques sont classés, mais les éléments qui sont équivalents ne sont pas.Deux éléments sont équivalents sous inférieur à, mais pas nécessairement égales, si aucune n'est inférieure à l'autre.

Exemple

// alg_partial_sort_copy.cpp
// compile with: /EHsc
#include <vector>
#include <list>
#include <algorithm>
#include <functional>
#include <iostream>

int main() {
    using namespace std;
    vector<int> v1, v2;
    list<int> list1;
    vector<int>::iterator iter1, iter2;
    list<int>::iterator list1_Iter, list1_inIter;

    int i;
    for (i = 0; i <= 9; i++)
        v1.push_back(i);

    random_shuffle(v1.begin(), v1.end());

    list1.push_back(60);
    list1.push_back(50);
    list1.push_back(20);
    list1.push_back(30);
    list1.push_back(40);
    list1.push_back(10);

    cout << "Vector v1 = ( " ;
    for (iter1 = v1.begin(); iter1 != v1.end(); iter1++)
        cout << *iter1 << " ";
    cout << ")" << endl;

    cout << "List list1 = ( " ;
    for (list1_Iter = list1.begin();
         list1_Iter!= list1.end();
         list1_Iter++)
        cout << *list1_Iter << " ";
    cout << ")" << endl;

    // Copying a partially sorted copy of list1 into v1
    vector<int>::iterator result1;
    result1 = partial_sort_copy(list1.begin(), list1.end(),
             v1.begin(), v1.begin() + 3);

    cout << "List list1 Vector v1 = ( " ;
    for (iter1 = v1.begin() ; iter1 != v1.end() ; iter1++)
        cout << *iter1 << " ";
    cout << ")" << endl;
    cout << "The first v1 element one position beyond"
         << "\n the last L 1 element inserted was " << *result1
         << "." << endl;

    // Copying a partially sorted copy of list1 into v2
    int ii;
    for (ii = 0; ii <= 9; ii++)
        v2.push_back(ii);

    random_shuffle(v2.begin(), v2.end());
    vector<int>::iterator result2;
    result2 = partial_sort_copy(list1.begin(), list1.end(),
             v2.begin(), v2.begin() + 6);

    cout << "List list1 into Vector v2 = ( " ;
    for (iter2 = v2.begin() ; iter2 != v2.end(); iter2++)
        cout << *iter2 << " ";
    cout << ")" << endl;
    cout << "The first v2 element one position beyond"
         << "\n the last L 1 element inserted was " << *result2
         << "." << endl;
}

Résultat de l'exemple

Vector v1 = ( 8 1 9 2 0 5 7 3 4 6 )
List list1 = ( 60 50 20 30 40 10 )
List list1 Vector v1 = ( 10 20 30 2 0 5 7 3 4 6 )
The first v1 element one position beyond
 the last L 1 element inserted was 2.
List list1 into Vector v2 = ( 10 20 30 40 50 60 1 8 5 2 )
The first v2 element one position beyond
 the last L 1 element inserted was 1.

Configuration requise

en-tête : <algorithm>

l'espace de noms : DST

Voir aussi

Référence

partial_sort_copy (STL Samples)

Predicate Version of partial_sort_copy

Modèles Standard