przejście do zawartości
zpr c++ quick reference
Narzędzia użytkownika
Zarejestruj się!
Zaloguj
Narzędzia witryny
Narzędzia
Pokaż stronę
Poprzednie wersje
Odnośniki
Ostatnie zmiany
Menadżer multimediów
Indeks
Zaloguj
Zarejestruj się!
Ostatnie zmiany
Menadżer multimediów
Indeks
Ślad:
remove_copy_remove_copy_if
Ta strona jest tylko do odczytu. Możesz wyświetlić źródła tej strony ale nie możesz ich zmienić.
====== 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: ===== <code cpp> #include <algorithm> </code> ===== Deklaracje: ===== <code cpp> template<class ForwardIterator, class OutputIterator, class Type> inline OutputIterator remove_copy( ForwardIterator First, ForwardIterator Last, OutputIterator Result, const T& Value ) </code> <code cpp> template<class ForwardIterator, class OutputIterator, class Predicate> inline OutputIterator remove_copy_if( ForwardIterator First, ForwardIterator Last, OutputIterator Result, Predicate Pred ) </code> ===== 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 ===== <code cpp> bool Predykat(std::string element); int main() { 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"); //----------------------- //Algorytm remove_copy: //----------------------- 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); //----------------------- //Algorytm remove_copy_if: //----------------------- 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); return 0; } 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.1240949610.txt.gz
· ostatnio zmienione: 2009/04/28 22:13 przez
qba
Narzędzia strony
Pokaż stronę
Poprzednie wersje
Odnośniki
Do góry