partial_sort_copy
Kopiert Elemente aus einem Quellbereich in einen Zielbereich, in dem die Quellelemente entweder von kleiner oder ein anderes festgelegtes binäres Prädikat sortiert werden.
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
);
Parameter
_First1
Ein Eingabeiterator, der die Position des ersten Elements im Quellbereich adressiert._Last1
Ein Eingabeiterator, der die Position eine hinter dem letzten Element im Quellbereich behandelt._First2
Ein Iterator mit wahlfreier Zugriff, der die Position des ersten Elements im Zielbereich sortierten behandelt._Last2
Ein Iterator mit wahlfreier Zugriff, der die Position eine hinter dem letzten Element im Zielbereich sortierten behandelt._Comp
Benutzerdefiniertes Prädikatfunktionsobjekt, das die erfüllt werden definiert Bedingung, wenn zwei Elemente als Entsprechung ausgeführt werden sollen. Ein binärer Prädikat akzeptiert zwei Argumente und gibt true zurück, wenn erfüllt und false, wenn nicht erfüllt wird.
Rückgabewert
Ein Iterator mit wahlfreier Zugriff, der das Element an der Position des Zielbereichs einer über den letzten Eintrag hinaus eingefügt vom Quellbereich behandelt.
Hinweise
Die Quelle und die Zielbereiche dürfen sich nicht überschneiden und müssen gültig sein; alle Zeiger müssen dereferenzierbar befinden jeder Sequenz muss die letzte Position der ersten von Zunahme erreichbar sein.
Das Prädikat binäre muss eine genaue schwache Sortierung angeben, damit Elemente, die nicht äquivalent sind, geordnet werden, jedoch Elemente, die äquivalent sind, sind nicht. Zwei Elemente sind unter kleiner als äquivalent, aber entsprechen nicht unbedingt, wenn nicht geringer als die andere.
Beispiel
// 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;
}
Beispielausgabe
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.
Anforderungen
Header: <algorithm>
Namespace: std
Siehe auch
Referenz
partial_sort_copy (STL-Beispiele)