partial_sort_copy
Zkopíruje prvky ze zdrojové oblasti do cílové oblasti, kde jsou zdroje prvky uspořádány tak, že buď menší než nebo jiného binárního predikátu.
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
);
Parametry
_First1
Vstupní iterátor adresování umístění prvního prvku ve zdrojové oblasti._Last1
Vstupní iterátor adresování umístění jeden za poslední prvek ve zdrojové oblasti._First2
Random access iterační, který adresování umístění první prvek v seřazeném cílové oblasti._Last2
Random access iterační, který adresování umístění jeden za poslední prvek v seřazeném cílové oblasti._Comp
Objekt predikátu funkce definované uživatelem, který definuje podmínky splněné, jestliže jsou dva prvky mají být přijata jako rovnocenný.Binárního predikátu přijímá dva argumenty a vrátí true li a false Pokud není splněna.
Vrácená hodnota
Random access iterační, adresování prvků v cílové oblasti jednu pozici za poslední prvek vložený ze zdrojové oblasti.
Poznámky
Zdrojové a cílové oblasti se nesmí překrývat a musí být platné; všechny ukazatele musí být dereferenceable a v rámci každé řady musí být poslední pozice první dostupné ve incrementation.
Binárního predikátu musí poskytnout přísné slabým řazení tak, aby pořadí prvků, které nejsou rovnocenné, ale nejsou prvky, které jsou rovnocenné.Jsou ekvivalentní za méně než dva prvky, ale ne nutně shodné, pokud ani je menší než ostatní.
Příklad
// 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;
}
Výstup ukázky
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.
Požadavky
Záhlaví: <algoritmus>
Obor názvů: std
Viz také
Referenční dokumentace
partial_sort_copy (ukázky STL)