partial_sort_copy
Éléments de copies d'une plage source dans une plage de destination où les éléments sources sont classés par un moins qu'un attribut ou 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 adressant la position du premier élément dans la plage source._Last1
Un itérateur d'entrée adressage la position une après l'élément final dans la plage source._First2
Un itérateur l'accès aléatoire adressage la position du premier élément dans la plage de destination triées._Last2
Un itérateur l'accès aléatoire adressage la position une après l'élément final dans la plage de destination triées._Comp
Objet de la fonction définie par l'utilisateur de prédicat qui définit la condition à répondre si deux éléments doivent être pris comme équivalent. Un attribut binaire accepte deux arguments et retourne true si satisfaite et false s'il n'est pas contenu.
Valeur de retour
Un itérateur l'accès aléatoire adressage à l'élément dans la plage de destination selon la position au delà de le dernier élément inséré de la plage source.
Notes
Les plages de source et 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 la collection contenue par l'augmentation.
L'attribut binaire doit fournir le caractère strict afin que les éléments qui ne sont pas équivalents sont ordonnés, mais les éléments qui sont équivalents ne sont pas. Deux éléments sont équivalents dans inférieure à égal, mais pas nécessairement, si aucune n'est inférieur à 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 : <algorithme>
Espace de noms : std
Voir aussi
Référence
partial_sort_copy (Exemples STL)