partial_sort_copy
Kopyalar öğeler kaynak aralığından nerede kaynak öğeleri sipariş tarafından hedef aralığın içine küçüktür veya başka bir ikili yüklemi belirtilir.
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
);
Parametreler
_First1
Kaynak aralığındaki ilk öğenin konumunu adresleme giriş Yineleyici._Last1
Bir giriş Yineleyici konumu bir son öğeden önceki kaynak aralığındaki adresleme._First2
Sıralanmış hedef aralıktaki ilk öğenin konumunu adresleme rasgele erişim Yineleyici._Last2
Konum bir son öğe geçmiş sıralanmış hedef aralıktaki adresleme rasgele erişim Yineleyici._Comp
Koşul varsa iki öğe alınması için yerine getirilmesi tanımlayan kullanıcı tanımlı işlevin doðrulama nesnesi olarak eşdeğer.İkili karşılaştırma iki baðýmsýz deðiþken alýr ve döner true memnun, ve false tatmin olduğunda.
Dönüş Değeri
Hedef aralığın bir pozisyon son öğenin ötesindeki öğesinde adresleme rasgele erişim Yineleyici kaynak aralığından eklemiş olabilirsiniz.
Notlar
Kaynak ve hedef aralıkların çakışmamaları gerekir ve geçerli olması gerekir; Tüm işaretçiler dereferenceable ve her sıra içinde son konuma birinciden erişilebilmelidir tarafından incrementation.
İkili karşılaştırma eşdeğer olmayan öğeleri sipariş, sipariş sıkı bir zayıf sağlamanız gerekir, ancak eşdeğer öğeler.İki öğe altında daha az daha eşdeğerdir ancak şart değil eşit, ikisi de varsa diğer azdır.
Örnek
// 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;
}
Örnek Çıktı
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.
Gereksinimler
Başlık: <algorithm>
Namespace: std
Ayrıca bkz.
Başvuru
partial_sort_copy (STL Samples)