Narzędzia użytkownika

Narzędzia witryny


remove_copy_remove_copy_if

Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Next revision
Previous revision
remove_copy_remove_copy_if [2009/04/28 22:04]
qba utworzono
remove_copy_remove_copy_if [2009/04/28 22:17] (aktualna)
qba
Linia 1: Linia 1:
 +====== ALGORYTM REMOVE_COPY / REMOVE_COPY_IF ======
 +
 Algorytm remove_copy kopiuje elementy pewnej kolekcji do innej omijajac obiekty, które sa rowne zadanej wartosci. Algorytm remove_copy kopiuje elementy pewnej kolekcji do innej omijajac obiekty, które sa rowne zadanej wartosci.
 Algorytm remove_copy_if kopiuje elementy pewnej kolekcji do innej. Element jest kopiowany, jezeli nie zostal Algorytm remove_copy_if kopiuje elementy pewnej kolekcji do innej. Element jest kopiowany, jezeli nie zostal
Linia 5: Linia 7:
 czas. czas.
  
-    ​Nagłowek:​ +===== Nagłowek: ​===== 
-        #​include<​algorithm>​+<code cpp> ​        
 +#include <​algorithm
 +</code>
  
-    ​Deklaracje:+===== Deklaracje: ​===== 
 +<code cpp> ​
  template<​class ForwardIterator,​ class OutputIterator,​ class Type>  template<​class ForwardIterator,​ class OutputIterator,​ class Type>
             inline OutputIterator remove_copy(             inline OutputIterator remove_copy(
Linia 16: Linia 21:
                 const T& Value                 const T& Value
                 )                 )
- +</​code>​ 
-        template<​class ForwardIterator,​ class OutputIterator,​ class Predicate>​+<code cpp>  
 +       template<​class ForwardIterator,​ class OutputIterator,​ class Predicate>​
             inline OutputIterator remove_copy_if(             inline OutputIterator remove_copy_if(
                 ForwardIterator First,                 ForwardIterator First,
Linia 24: Linia 30:
                 Predicate Pred                 Predicate Pred
             )             )
- +</​code> ​ 
-    Parametry:​ +    ​ 
- remove_copy:​+===== Parametry: ​===== 
 +== remove_copy: ​==
             First      - Poczatkowy element kolekcji zrodlowej.             First      - Poczatkowy element kolekcji zrodlowej.
             Last       - Koncowy element kolekcji zrodlowej.             Last       - Koncowy element kolekcji zrodlowej.
Linia 32: Linia 39:
             Value      - Wartosc, ktora ma byc pomijana podczas kopiowania.             Value      - Wartosc, ktora ma byc pomijana podczas kopiowania.
  
-        ​remove_copy_if:​+== remove_copy_if: ​==
             Firstt ​     - Poczatkowy element kolekcji zrodlowej.             Firstt ​     - Poczatkowy element kolekcji zrodlowej.
             Last        - Koncowy element kolekcji zrodlowej.             Last        - Koncowy element kolekcji zrodlowej.
Linia 38: Linia 45:
             Pred        - Warunek okreslajacy czy wartosc ma zostac skopiowana.             Pred        - Warunek okreslajacy czy wartosc ma zostac skopiowana.
  
-    ​Wartosc zwracana:+===== Wartosc zwracana: ​=====
  Obie funkcje zwracaja iterator na koniec nowej kolekcji.  Obie funkcje zwracaja iterator na koniec nowej kolekcji.
  
-    ​Złożonosc:​+===== Złożonosc: ​=====
         Obie funkcje pracuja w czasie liniowym.         Obie funkcje pracuja w czasie liniowym.
 +
 +===== Przyklad Uzycia =====
 +== Stworzenie kolekcji: ==
 +<code cpp>
 +    std::​list<​std::​string>​ kolekcja_zrodlowa; ​      //​Tworzymy przykladowa kolekcje obiektow
 +    kolekcja_zrodlowa.push_back("​Adam"​); ​           //i wypelniamy ja przykladowymi wartosciami
 +    kolekcja_zrodlowa.push_back("​Ewa"​);​
 +    kolekcja_zrodlowa.push_back("​Usun"​);​
 +    kolekcja_zrodlowa.push_back("​Ela"​);​
 +    kolekcja_zrodlowa.push_back("​Usun"​);​
 +    kolekcja_zrodlowa.push_back("​Jola"​);​
 +    kolekcja_zrodlowa.push_back("​Ola"​);​
 +</​code>​
 +== remove_copy:​ ==
 +<code cpp>
 +    std::​list<​std::​string>​ kolekcja_docelowa1; ​     //Tworzymy kolekcje, do ktorej kopiowala bedzie funkcja remove_copy
 +    std::string warunek="​Usun"; ​                    //​Tworzymy zmienna przechowujaca napis, ktory ma nie byc kopiowany
 +
 +    kolekcja_docelowa1.resize(10);​
 +
 +    std::​list<​std::​string>::​iterator doc1_iterator;​ //Funkcja ma skopiowac kolekcja_zrodlowa do kolekcja_docelowa1 pomijajac wartosc "​Usun"​
 +    doc1_iterator = remove_copy(kolekcja_zrodlowa.begin(),​ kolekcja_zrodlowa.end(),​ kolekcja_docelowa1.begin(),​ warunek);
 +</​code>​
 +==remove_copy_if:​ ==
 +<code cpp>
 +    std::​list<​std::​string>​ kolekcja_docelowa2; ​     //Tworzymy kolekcje, do ktorej kopiowala bedzie funkcja remove_copy_if
 +
 +    kolekcja_docelowa2.resize(10);​
 +
 +    std::​list<​std::​string>::​iterator doc2_iterator;​ //Funkcja ma skopiowac kolekcja_zrodlowa do kolekcja_docelowa1 pomijajac wartosci
 +                                                    //dla ktorych Predykat() == true
 +    doc2_iterator = remove_copy_if(kolekcja_zrodlowa.begin(),​ kolekcja_zrodlowa.end(),​ kolekcja_docelowa2.begin(),​ Predykat);
 +</​code>​
 +== Funkcja predykat: ==
 +<code cpp>
 +bool Predykat(std::​string element){ ​                //​Funkcja warunek, ktora zostaje wywolywana przez funkcje remove_copy_if aby sprawdzic,
 +                                                    //czy dany element nalezy usunac.
 +    if(element=="​Usun"​ || element[0] == '​E'​)
 +        return true;                                //Jezeli element=="​Usun"​ lub pierwszy znak elementu to "​E",​ wtedy nie kopiujemy.
 +    return false;
 +}
 +</​code>​
remove_copy_remove_copy_if.1240949053.txt.gz · ostatnio zmienione: 2009/04/28 22:04 przez qba