partial_sort_copy
Kopiuje elementy z zakresu źródłowego do docelowego zakresu gdzie elementów źródłowych są uporządkowane według albo mniej niż lub inny określony predykatu dwuelementowego połączone.
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
Iterator danych wejściowych, odnoszący się do pozycji pierwszego elementu w zakresie źródłowym._Last1
Wejściowy sterująca adresowania położenie jeden obok ostatniego elementu w zakresie źródłowym._First2
Adresowanie położenie pierwszego elementu w zakresie docelowym posortowane sterująca dostępie losowym._Last2
Adresowanie położenie jeden obok ostatniego elementu w zakresie docelowym posortowane sterująca dostępie losowym._Comp
Zdefiniowana przez użytkownika funkcja predykatu obiektu, który definiuje warunek za spełniony, jeśli dwa elementy mają być pobierane za równoważny.Predykatu dwuelementowego przyjmuje dwa argumenty i zwraca true po stwierdzeniu i false Jeśli nie spełniony.
Wartość zwracana
Sterująca dostępie losowym, adresowania element w docelowym zakres jednej pozycji za ostatni element wstawianych z zakresu Yródłowego.
Uwagi
Zakresów źródłowych i docelowych nie może nakładać się i musi być ważne; wszystkie wskaźniki muszą być dereferenceable i w ramach każdej sekwencji ostatniej pozycji musi być osiągalny od pierwszego przez incrementation.
Predykat dwuelementowy musi dostarczyć ścisłe słaby zamawiania, aby sortowane są elementy, które nie są równoważne, ale nie są elementy, które są równoważne.Dwa elementy są równoważne w obszarze mniej, ale niekoniecznie równe, jeśli nie jest mniejsza niż inne.
Przykład
// 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;
}
Przykładowe dane wyjściowe
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.
Wymagania
Nagłówek: <algorytm>
Przestrzeń nazw: std
Zobacz też
Informacje
partial_sort_copy (STL — Przykłady)