[ Pobierz całość w formacie PDF ]
.ObejmujÄ… one operatory takie, jak for_each() (dla każdego) oraz find() (znajdź), search() (szukaj), count() (policz) itd.Listing 19.12 przedstawia sposób użycia obiektu funkcyjn[Author ID2: at Mon Nov 12 10:44:00 2001]ego[Author ID2: at Mon Nov 12 10:45:00 2001]ji[Author ID2: at Mon Nov 12 10:44:00 2001] oraz algorytmu for_each() w celu wypisania elementów wektora.Listing 19.12.Użycie algorytmu for_each()0: #include <iostream>1: #include <vector>2: #include <algorithm>3: using namespace std;4:5: template<class T>6: class Print7: {8: public:9: void operator()(const T& t)10: {11: cout << t << " ";12: }13: };14:15: int main()16: {17: Print<int> DoPrint;18: vector<int> vInt(5);19:20: for (int i = 0; i < 5; ++i)21: vInt[i] = i * 3;22:23: cout << "for_each()\n";24: for_each(vInt.begin(), vInt.end(), DoPrint);25: cout << "\n";26:27: return 0;28: }Wynikfor_each()0 3 6 9 12AnalizaZwróć uwagÄ™, że algorytmy standardowe w C++ sÄ… zdefiniowane w pliku nagłówkowym <algorithm>, wiÄ™c musimy doÅ‚Ä…czyć go do kodu programu.WiÄ™kszość programu powinna być Å‚atwo zrozumiaÅ‚a.W linii 24.zostaje wywoÅ‚ana funkcja for_each() „przechodzÄ…ca” przez wszystkie elementy w wektorze vInt.Dla każdego elementu wywoÅ‚uje ona obiekt funkcji DoPrint i przekazuje element do funkcji DoPrint.operator().To powoduje, że wartość elementu zostaje wypisana na ekranie.A[Author ID2: at Mon Nov 12 10:45:00 2001]Mutacyjne a[Author ID2: at Mon Nov 12 10:45:00 2001]lgorytmy zmieniajÄ…ce[Author ID2: at Mon Nov 12 10:45:00 2001] sekwency[Author ID2: at Mon Nov 12 10:45:00 2001]jn[Author ID2: at Mon Nov 12 10:45:00 2001]eA[Author ID2: at Mon Nov 12 10:46:00 2001]Mutac[Author ID2: at Mon Nov 12 10:46:00 2001]yjne a[Author ID2: at Mon Nov 12 10:46:00 2001]lgorytmy zmieniajÄ…ce[Author ID2: at Mon Nov 12 10:46:00 2001] sekwency[Author ID2: at Mon Nov 12 10:46:00 2001]jn[Author ID2: at Mon Nov 12 10:46:00 2001]e wykonujÄ… operacje zmieniajÄ…ce elementy w sekwencji.Należą do nich operacje wypeÅ‚niajÄ…ce sekwencje lub zmieniajÄ…ce kolejność zawartych w nich elementów.Listing 19.13 przedstawia algorytm fill() (wypeÅ‚nij).Listing 19.13.Algorytm zmieniajÄ…cy sekwencjÄ™0: #include <iostream>1: #include <vector>2: #include <algorithm>3: using namespace std;4:5: template<class T>6: class Print7: {8: public:9: void operator()(const T& t)10: {11: cout << t << " ";12: }13: };14:15: int main()16: {17: Print<int> DoPrint;18: vector<int> vInt(10);19:20: fill(vInt.begin(), vInt.begin() + 5, 1);21: fill(vInt.begin() + 5, vInt.end(), 2);22:23: for_each(vInt.begin(), vInt.end(), DoPrint);24: cout << "\n\n";25:26: return 0;27: }Wynik1 1 1 1 1 2 2 2 2 2AnalizaJedynÄ… nowÄ… zawartoÅ›ciÄ… tego listingu sÄ… linie 20.i 21., w których jest używany algrytm fill().Algorytm ten wypeÅ‚nia elementy sekwencji żądanÄ… wartoÅ›ciÄ….W linii 20.przypisuje wartość caÅ‚kowitÄ… 1 do piÄ™ciu pierwszych elementów wektora vInt.W linii 21.piÄ™ciu ostatnim elementom wektora jest przypisywana wartość 2.2 Część I ♦ Podstawy obsÅ‚ugi systemu WhizBang (Nagłówek strony)2 E:\- pshem -\plany\warsztat c++\_mat\Helion - C++ dla kazdego\r19-06.doc[Author ID1: at Thu Nov 29 10:26:00 2001][Author ID1: at Thu Nov 29 10:26:00 2001][Author ID1: at Thu Nov 29 10:26:00 2001][Author ID1: at Thu Nov 29 10:26:00 2001][Author ID1: at Thu Nov 29 10:26:00 2001][Author ID1: at Thu Nov 29 10:26:00 2001]„[Author ID1: at Thu Nov 29 10:27:00 2001]Template[Author ID1: at Thu Nov 29 10:26:00 2001]” w odniesieniu do jÄ™zyka C++ to „wzorzec”, a nie „szablon”.(Za: Bjorne Stroustrup, JÄ™zyk C++, PWN).[Author ID1: at Thu Nov 29 10:27:00 2001]
[ Pobierz całość w formacie PDF ]