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
Previous revision
count_count_if [2008/12/11 18:28]
abartcza
count_count_if [2008/12/12 00:03] (aktualna)
abartcza
Linia 8: Linia 8:
  
 ===== Opis algorytmu count ===== ===== Opis algorytmu count =====
-=== Deklaracja ​algorytmu count ===+=== Definicja ​algorytmu count ===
 <code cpp> ​ template <class InputIterator,​ class T> <code cpp> ​ template <class InputIterator,​ class T>
   ptrdiff_t count ( InputIterator first, InputIterator last, const T& value )   ptrdiff_t count ( InputIterator first, InputIterator last, const T& value )
Linia 74: Linia 74:
 ===== Opis algorytmu count_if ===== ===== Opis algorytmu count_if =====
  
-=== Deklaracja ​algorytmu count_if ===+=== Definicja ​algorytmu count_if ===
 <code cpp> ​ template <class InputIterator,​ class Predicate>​ <code cpp> ​ template <class InputIterator,​ class Predicate>​
   ptrdiff_t count_if ( InputIterator first, InputIterator last, Predicate pred )   ptrdiff_t count_if ( InputIterator first, InputIterator last, Predicate pred )
Linia 115: Linia 115:
 int main() { int main() {
   
-    ​typedef vector<​string>​ VectorString;​ +    // tutaj odpowiednie deklaracje ... 
-  +
-    typedef VectorString::​iterator VectorStringIt;​ +
-   +
-    ​// wektor imion +
-    VectorString vect; +
-   +
-    // iteratory wskazujace na wektor imion vect +
-    VectorStringIt start, end; +
-   +
-    // zmienna zawierająca liczbę elementów pasująca do danego wzroca +
-    ptrdiff_t result; +
-   +
     // przykladowy napis ktory jest wypelniony polskimi imionami, odzielony znakami     // przykladowy napis ktory jest wypelniony polskimi imionami, odzielony znakami
     // które nie są literami alfabetu (separatorami). W imionach nie należy wstawiać ​     // które nie są literami alfabetu (separatorami). W imionach nie należy wstawiać ​
Linia 167: Linia 156:
  
 ===== 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_if2.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.1229016530.txt.gz · ostatnio zmienione: 2008/12/11 18:28 przez abartcza