Narzędzia użytkownika

Narzędzia witryny


count_count_if

Różnice

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

Odnośnik do tego porównania

Both sides previous revision Previous revision
Next revision Both sides next revision
count_count_if [2008/12/11 18:28]
abartcza
count_count_if [2008/12/11 18:30]
abartcza
Linia 168: Linia 168:
 ===== Przykładowy program wykorzystujący algorytmy count i count_if ===== ===== Przykładowy program wykorzystujący algorytmy count i count_if =====
 {{count_count_if.cpp}} {{count_count_if.cpp}}
- 
-<code cpp>/​* ​ 
- * Autor: Adam Bartczak, 5TIZ 
- * Temat:​ Biblioteka STL, Opis algorytmów : count count_if 
- * 
- * count count_if należą do algorytmów niemodyfikujących biblioteki STL 
- ​* ​ 
- * Autor: Adam Bartczak, 5TIZ 
- * Temat:​ Biblioteka STL, Opis algorytmów : count count_if 
- * 
- * count count_if należą do algorytmów niemodyfikujących biblioteki STL 
- * 
- * template <class InputIterator,​ class T> 
- * ptrdiff_t count ( InputIterator first, InputIterator last, const T& value ); 
- * 
- * ptrdiff_t count_return = count(<​element od którego zaczynamy wyszukiwanie>, ​ 
- ​* <​element na którym kończymy wyszukiwanie>,​ <​warotść szukana>​);​ 
- * 
- * Algorytm count oblicza liczę elementów w kontenerze z zakresu [first, last) które pasują do warotości value, 
- * następnie zwraca liczbę pasujących elementów. ​ 
- * 
- * template <class InputIterator,​ class Predicate>​ 
- * ptrdiff_t count_if ( InputIterator first, InputIterator last, Predicate predict ); 
- * 
- * ptrdiff_t count_if_return = count_if(<​element od którego zaczynamy wyszukiwanie>,​ 
- ​* <​element na którym kończymy wyszukiwanie>,​ <​predykat do spełnienia>​);​ 
- * 
- * Algorytm count_if oblicza liczbę elementów w kontenerze z zakresu [first, last) spełniających predykat predict ​ 
- * przekazany jako obiekt funkcyjny, następnie zwraca liczbę pasujących elementów. 
- * 
- * Przykład zastosowania algorytmów count oraz count_if oparty jest na wyszukiwaniu odpowiednich elementów  ​ 
- * (włąściwych imion) wśród kontenera zawierającego polskie imiona. 
- */ 
-  
- #​include <​iostream>​ 
- #​include <​vector>​ 
- #​include <​string>​ 
- // biblioteka z algorytmami STL 
- #​include <​algorithm>​ 
- // biblioteka wykorzystywana do dzielenia napisów 
- #​include <​boost/​tokenizer.hpp>​ 
-  ​ 
- using namespace std; 
-  
- // funkcja wykrywająca polskie imiona kobiet 
- ​bool ​ NameWoman(const string& str) { 
-    return (str[str.size()-1] == '​a'​ || str[str.size()-1] == '​A'​);​ 
- } 
-  
- // funkcja wykrywająca polskie imiona mężczyzn 
- ​bool ​ NameMan(const string& str) { 
-    return (!NameWoman(str));​ 
- } 
-  
- // funkcja wykrywająca imiona składające się z więcej niż 5 liter  
- ​bool ​ NameSize(const string& str) { 
-    return (str.size() > 5); 
- } 
- 
- int main() { 
-  
-    typedef vector<​string>​ VectorString;​ 
-  
-    typedef VectorString::​iterator VectorStringIt;​ 
-   
-    // wektor imion 
-    VectorString vect; 
-   
-    // iteratory wskazujace na wektor imion vect 
-    VectorStringIt start, end, it; 
-   
-    // zmienna zawierająca liczbę elementów pasująca do danego wzroca 
-    ptrdiff_t result; 
-   
-    // przykladowy napis ktory jest wypelniony polskimi imionami, odzielony znakami 
-    // które nie są literami alfabetu (separatorami). W imionach nie należy wstawiać ​ 
-    // polskich liter (ą,​ę,​ł...),​ zamiast ich stosować odpowiedniki (a,e,l...). 
-    const string STRING_NAMES = "Adam Michal Bartek, ​  Adam . Ania ,/ EwA"; 
-   
-    // przykladowy wzorzec imienia dla funkcji count 
-    const string VALUE_COUNT = "​Adam";​ 
- 
-    // dzielenie napisu na poszczególne imiona, następnie przypisywanie każdego z nich do wektora imion vect 
-    boost::​tokenizer<>​ tok(STRING_NAMES);​ 
-    for(boost::​tokenizer<>::​iterator beg=tok.begin();​ beg!=tok.end();​++beg){ 
-        vect.push_back(*beg);​ 
-    } 
-    ​ 
-    // przypisanie iteratorom start i end wartości początkowych 
-    start = vect.begin();  ​ 
-    end = vect.end(); 
-    ​ 
-    // liczba wystapien imienia zawartego w zmiennej VALUE_COUNT (zastosowanie algorymu count) 
-    result = count(start,​ end, VALUE_COUNT) ; 
- 
-    cout << "​Liczba wystapien imienia " << VALUE_COUNT << ": " << result << endl; 
-    ​ 
-    // liczba imion żeńskich w wektorze imion vect (zastosowanie algorymu count_if) 
-    result = count_if(start,​ end, NameWoman) ; 
-    ​ 
-    cout << "​Liczba Kobiet: " << result << endl; 
-    ​ 
-    // liczba imion męskich w wektorze imion vect (zastosowanie algorymu count_if) 
-    result = count_if(start,​ end, NameMan) ; 
-    ​ 
-    cout << "​Liczba Mezczyzn: " << result << endl; 
-    ​ 
-    // liczba imion zawierające więcej niż 5 liter (zastosowanie algorymu count_if) 
-    result = count_if(start,​ end, NameSize) ; 
-    ​ 
-    cout << "​Liczba slow o liczbie liter > 5: " << result << endl;  
-  
-    return 0;   
- } </​code>​ 
  
  --- //​[[master.bartczak@gmail.com|Adam Bartczak 5TIZ]]//  --- //​[[master.bartczak@gmail.com|Adam Bartczak 5TIZ]]//
count_count_if.txt · ostatnio zmienione: 2008/12/12 00:03 przez abartcza