Narzędzia użytkownika

Narzędzia witryny


unique_unique_copy

To jest stara wersja strony!


Algorytmy unique, unique_copy

Algorytmy te znajdują się w bibliotece algorithm.

Nagłówek

 #include <algorithm> 

unique

template <class ForwardIterator>
  ForwardIterator unique ( ForwardIterator firstElement, ForwardIterator lastElement );
 
template <class ForwardIterator, class BinaryPredicate>
  ForwardIterator unique ( ForwardIterator firstElement, ForwardIterator lastElement, BinaryPredicate comp );

unique to algorytm służący usuwaniu następujących po sobie duplikatów elementów z zakresu [ firstElement , lastElement ). firstElement i lastElement są iteratorami wskazującymi na pozycję w kontenerze ( np. lista, wektor ). Algorytm jest realizowany poprzez usuwanie wszystkich elementów identycznych z elementem bezpośrednio poprzedzającym.

Porównywanie elementów odbywa się przy wykorzystaniu operatora ==. W przypadku, gdy nie jest zaimplementowany, należy podać jako trzeci argument funkcję, która porównuje elementy. Powinna ona zwracać true jeśli elementy są identyczne i false w przeciwnym przypadku.

Zachowanie algorytmu jest następujące:

template <class ForwardIterator>
  ForwardIterator unique ( ForwardIterator firstElement, ForwardIterator lastElement )
{
  ForwardIterator result = first;
 
  while ( ++first != last )
  {
    if ( !( *result == *first ) ) 
        *(++result)=*first;
  }
 
  return ++result;
}

Parametry

  • firstElement, lastElement - iteratory wskazujące zakres elementów na którym będzie realizowany algorytm. Zakres ten zawiera wszystkie elementy od firstElement do elementu poprzedzającego lastElement.
  • comp - binarny predykat przyjmujący 2 elemety jako argumenty i zwracający true jeśli oba są równe i false w przeciwnym przypadku. Może to być zarówno wskaźnik na funkcję, jak i wskaźnik na obiekt klasy przeciążającej operator().

Wartość zwracana

Iterator wskazujący na nowy koniec sekwencji z zadanego zakresu, która nie zawiera już powtarzających się po sobie elementów.

Uwaga

Należy uwzględnić fakt, że algorytm unique nie zmienia wielkości kontenera, ani nie zmienia elementów położonych za nowym końcem ( ciągle są dostępne ).

unique_unique_copy.1241043803.txt.gz · ostatnio zmienione: 2009/04/30 00:23 przez pgrabowska