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:
replace_replace_if
Ta strona jest tylko do odczytu. Możesz wyświetlić źródła tej strony ale nie możesz ich zmienić.
====== Algorytmy replace replace_if ====== Algorytmy replace, replace_if umożliwiają przeglądanie ciągu (kolekcji) i zamianę wartości na inne, zgodnie ze specyfikacją. Algorytm replace używa operatora==() do porównywania elementów, replace_if przyjmuje predykat jako warunek zamiany. Algorytmy te umożliwiają łatwy, jednoznaczny i zwięzły sposób realizacji bardzo częstej operacji jaką jest zamiana. ===== Nagłówek ===== <code cpp> #include<algorithm> </code> ===== Definicja replace ===== <code cpp> template<class For, class T> void replace(For first, For last, const T& val, const T& new_val) { while (first != last) { if(*first == val) *first = new_val; ++first; } } </code> ===== Parametry replace===== * first - pierwszy element ciągu * last - element za ostatnim w ciągu * val - wartość wzorca, obiekty o tej wartości będą zamieniane * new_val - wartość na którą będą zamieniane obiekty pasujące do wzorca (val) ===== Definicja replace_if ===== <code cpp> template<class For, class T> void replace_if(For first, For last, Pred p, const T& new_val) { while (first != last) { if(p(*first) *first = new_val; ++first; } } </code> ===== Parametry replace_if===== * first - pierwszy element ciągu * last - element za ostatnim w ciągu * pred - predykat, jeżeli dla danego elementu ciągu zwróci TRUE, element ten zostanie zamieniony na new_val * new_val - wartość na którą będą zamieniane elementy spełniające predykat ===== Przykłady ===== Zdefiniujmy kolekcję. <code cpp> typedef std::list<std::string> Miasta; Miasta miasta; miasta.push_back("Warszawa"); miasta.push_back("Krakow"); miasta.push_back("Poznan"); miasta.push_back("Ostrow Mazowiecka"); miasta.push_back("Warszawa"); </code> ===== Przykład użycia replace ===== <code cpp> replace(miasta.begin(), miasta.end(),std::string("Warszawa"),std::string("Gdansk")); </code> ===== Przykład użycia replace_if ===== Zdefiniujmy predykat: <code cpp> bool is_gdansk(const std::string& miasto) { return (miasto == "Gdansk"); } </code> Wywolanie replace_if <code cpp> replace_if(miasta.begin(),miasta.end(),is_gdansk,std::string("Wroclaw")); </code>
replace_replace_if.txt
· ostatnio zmienione: 2008/12/11 16:19 przez
kswietko
Narzędzia strony
Pokaż stronę
Poprzednie wersje
Odnośniki
Do góry