partial_sort_copy
Zkopíruje prvky ze zdrojové oblasti do cílové oblasti, kde jsou zdroje prvky uspořádány podle 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í iterační adresování pozici první prvek ve zdrojové oblasti._Last1
Vstupní iterační adresování pozice jeden za poslední prvek ve zdrojové oblasti._First2
Random access iterace, který adresování pozici první prvek v seřazené cílové oblasti._Last2
Random access iterace, který adresování pozice jeden za poslední prvek v seřazené cílové oblasti._Comp
Uživatelem definované funkce predikátu objektu, který definuje podmínky splněny, pokud jsou dva prvky mají být přijata jako rovnocenné.Binárního predikátu trvá dva argumenty a vrátí true -li splněna a false Pokud nejsou splněny.
Vrácená hodnota
Random access iterační adresování prvek 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é sekvence musí být dostupná z první poslední pozice ve incrementation.
Binárního predikátu musí stanovit přísné slabá objednávání tak, že jsou prvky, které nejsou rovnocenné uspořádány, ale nejsou prvky, které jsou rovnocenné.Jsou rovnocenné 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;
}
Vzorový výstup
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í: <algorithm>
Obor názvů: std
Viz také
Referenční dokumentace
partial_sort_copy (STL Samples)