====== 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_if kopiuje elementy pewnej kolekcji do innej. Element jest kopiowany, jezeli nie zostal
spelniony pewien warunek. W przeciwnym przypadku element zostaje pominięty.
Funkcje te stosowane sa do operacji na kontenerach, aby poprawic czytelnosc kodu oraz zaoszczedzic programiscie
czas.
===== Nagłowek: =====
        
#include 
===== Deklaracje: =====
 
	template
            inline OutputIterator remove_copy(
                ForwardIterator First,
                ForwardIterator Last,
                OutputIterator Result,
                const T& Value
                )
 
       template
            inline OutputIterator remove_copy_if(
                ForwardIterator First,
                ForwardIterator Last,
                OutputIterator Result,
                Predicate Pred
            )
 
    
===== Parametry: =====
== remove_copy: ==
            First      - Poczatkowy element kolekcji zrodlowej.
            Last       - Koncowy element kolekcji zrodlowej.
            Result     - Iterator na kolekcje, do ktorej kopiowane sa dane.
            Value      - Wartosc, ktora ma byc pomijana podczas kopiowania.
== remove_copy_if: ==
            Firstt      - Poczatkowy element kolekcji zrodlowej.
            Last        - Koncowy element kolekcji zrodlowej.
            Result      - Iterator na kolekcje, do ktorej kopiowane sa dane.
            Pred        - Warunek okreslajacy czy wartosc ma zostac skopiowana.
===== Wartosc zwracana: =====
		Obie funkcje zwracaja iterator na koniec nowej kolekcji.
===== Złożonosc: =====
        Obie funkcje pracuja w czasie liniowym.
===== Przyklad Uzycia =====
== Stworzenie kolekcji: ==
    std::list 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");
== remove_copy: ==
    std::list 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::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);
==remove_copy_if: ==
    std::list kolekcja_docelowa2;      //Tworzymy kolekcje, do ktorej kopiowala bedzie funkcja remove_copy_if
    kolekcja_docelowa2.resize(10);
    std::list::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);
== Funkcja predykat: ==
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;
}