Udostępnij za pośrednictwem


partial_sort_copy

Kopiuje elementy z zakresu źródłowego do zakresu docelowego, gdy elementy źródła są uporządkowane według albo mniejsza niż lub innego określonego predykatu dwuelementowego.

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
    Wejściowy iteratora adresowania położenie pierwszego elementu w zakresie źródłowym.

  • _Last1
    Wejściowy iteratora adresowania położenie jednego poza ostatnim elementem w zakresie źródłowym.

  • _First2
    Adresowanie położenie pierwszego elementu w zakresie docelowym sortowane iteratora losowy dostęp.

  • _Last2
    Adresowanie położenie jednego poza ostatnim elementem w zakresie docelowym sortowane iteratora losowy dostęp.

  • _Comp
    Obiektu predykatu funkcję zdefiniowaną przez użytkownika, który definiuje warunek spełniony, jeśli dwa elementy są pobierane za równoważne.Predykatu dwuelementowego ma dwa argumenty i zwraca true po stwierdzeniu i false , gdy nie są spełnione.

Wartość zwracana

Dodaje iteratora random access, adresowania elementu w pozycji jednego zakresu docelowego poza ostatni element z zakresu źródłowego.

Uwagi

Zakresów źródłowych i docelowych nie musi pokrywać się i musi być ważny; wszystkie wskaźniki muszą być dereferenceable i w każdej sekwencji ostatniej pozycji musi być osiągalny od pierwszego przez incrementation.

Podać predykatu dwuelementowego ścisłe słabe, zamawiania, tak aby elementy, które nie są równoważne są uporządkowane, ale nie są elementy, które są równoważne.Dwa elementy są równoważne w mniej, ale niekoniecznie równości, 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: <algorithm>

Obszar nazw: std

Zobacz też

Informacje

partial_sort_copy (STL Samples)

Predicate Version of partial_sort_copy

Standardowa biblioteka szablonu