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
Last revision Both sides next revision
count_count_if [2008/12/11 18:03]
abartcza
count_count_if [2008/12/11 21:35]
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 40: Linia 40:
     
     // iteratory wskazujace na wektor imion vect     // iteratory wskazujace na wektor imion vect
-    VectorStringIt start, end, it;+    VectorStringIt start, end;
     
     // zmienna zawierająca liczbę elementów pasująca do danego wzroca     // zmienna zawierająca liczbę elementów pasująca do danego wzroca
Linia 50: Linia 50:
     const string STRING_NAMES = "Adam Michal Bartek, ​  Adam . Ania ,/ EwA";     const string STRING_NAMES = "Adam Michal Bartek, ​  Adam . Ania ,/ EwA";
     
-  // przykladowy wzorzec imienia dla funkcji count +    ​// przykladowy wzorzec imienia dla funkcji count 
-   const string VALUE_COUNT = "​Adam";​+    const string VALUE_COUNT = "​Adam";​
  
     // dzielenie napisu na poszczególne imiona, następnie przypisywanie każdego z nich do wektora imion vect     // dzielenie napisu na poszczególne imiona, następnie przypisywanie każdego z nich do wektora imion vect
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 98: Linia 98:
 === Przykład użycia algorytmu count_if=== === Przykład użycia algorytmu count_if===
  
-<code cpp> ​#include <​iostream>​ +<code cpp> // funkcja wykrywająca polskie imiona kobiet 
- #​include <​vector>​ + ​bool ​ NameWoman(const string& str) { 
- #​include <​string>​ +    return (str[str.size()-1] == '​a'​ || str[str.size()-1] == '​A'​);​
- // biblioteka z algorytmami STL +
- #​include <​algorithm>​ +
- // biblioteka wykorzystywana do dzielenia napisów +
- #​include <​boost/​tokenizer.hpp>​ +
-  +
- // funkcja wykrywająca polskie imiona kobiet +
- inline ​bool  NameWoman(const ​std::string& str) { +
- return (str[str.size()-1] == '​a'​ || str[str.size()-1] == '​A'​);​+
  }  }
    
  // funkcja wykrywająca polskie imiona mężczyzn  // funkcja wykrywająca polskie imiona mężczyzn
- inline ​bool  NameMan(const ​std::string& str) { + ​bool ​ NameMan(const string& str) { 
- return (!NameWoman(str));​+    return (!NameWoman(str));​
  }  }
    
- // funkcja ​porównująca ilość liter w słowie + // funkcja ​wykrywająca imiona składające się z więcej niż 5 liter  
- inline ​bool  NameSize(const ​std::string& str) { + ​bool ​ NameSize(const string& str) { 
- return (str.size() > 5);+    return (str.size() > 5);
  }  }
-  + 
- int main() {+int main() {
   
- typedef ​std::vector<std::string> VectorString;​+    ​typedef vector<​string>​ VectorString;​
   
- typedef VectorString::​iterator VectorStringIt;​ +    ​typedef VectorString::​iterator VectorStringIt;​ 
-  +    
- // wektor imion +    // wektor imion 
- VectorString vect; +    VectorString vect; 
-  +    
- // iteratory wskazujace na wektor imion vect +    // iteratory wskazujace na wektor imion vect 
- VectorStringIt start, end, it+    VectorStringIt start, end; 
-  +    
- // zmienna zawierająca liczbę elementów pasująca do danego wzroca +    // zmienna zawierająca liczbę elementów pasująca do danego wzroca 
- ptrdiff_t result; +    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ć  
- // polskich liter (ą,​ę...). +    // polskich liter (ą,ę,ł...), zamiast ich stosować odpowiedniki (a,e,l...). 
- const ​std::string STRING_NAMES = "Adam Michal Bartek, ​  Adam . Ania ,/ EwA";​ +    const string STRING_NAMES = "Adam Michal Bartek, ​  Adam . Ania ,/ EwA";​ 
-  +    
- // przykladowy wzorzec imienia dla funkcji count +    // przykladowy wzorzec imienia dla funkcji count 
- const ​std::string VALUE_COUNT = "​Adam";​+    const string VALUE_COUNT = "​Adam";​
  
- // dzielenie napisu na poszczególne imiona, następnie przypisywanie każdego z nich do wektora imion vect +    ​// dzielenie napisu na poszczególne imiona, następnie przypisywanie każdego z nich do wektora imion vect 
- boost::​tokenizer<>​ tok(STRING_NAMES);​ +    boost::​tokenizer<>​ tok(STRING_NAMES);​ 
- for(boost::​tokenizer<>::​iterator beg=tok.begin();​ beg!=tok.end();​++beg){+    for(boost::​tokenizer<>::​iterator beg=tok.begin();​ beg!=tok.end();​++beg){
         vect.push_back(*beg);​         vect.push_back(*beg);​
     }     }
     ​     ​
     // przypisanie iteratorom start i end wartości początkowych     // przypisanie iteratorom start i end wartości początkowych
-    start = vect.begin();​ +    start = vect.begin(); ​ 
-    ​+
     end = vect.end();     end = vect.end();
-    ​ + 
-    // liczba imion żeńskich w wektorze imion (zastosowanie algorymu count_if)+    // liczba imion żeńskich w wektorze imion vect (zastosowanie algorymu count_if)
     result = count_if(start,​ end, NameWoman) ;     result = count_if(start,​ end, NameWoman) ;
     ​     ​
-    ​std::cout << "​Liczba Kobiet: " << result << ​std::endl;+    cout << "​Liczba Kobiet: " << result << endl;
     ​     ​
-    // liczba imion męskich w wektorze imion (zastosowanie algorymu count_if)+    // liczba imion męskich w wektorze imion vect (zastosowanie algorymu count_if)
     result = count_if(start,​ end, NameMan) ;     result = count_if(start,​ end, NameMan) ;
     ​     ​
-    ​std::cout << "​Liczba Mezczyzn: " << result << ​std::endl;+    cout << "​Liczba Mezczyzn: " << result << endl;
     ​     ​
     // liczba imion zawierające więcej niż 5 liter (zastosowanie algorymu count_if)     // liczba imion zawierające więcej niż 5 liter (zastosowanie algorymu count_if)
     result = count_if(start,​ end, NameSize) ;     result = count_if(start,​ end, NameSize) ;
     ​     ​
-    ​std::cout << "​Liczba slow o liczbie liter > 5: " << result << ​std::endl; +    cout << "​Liczba slow o liczbie liter > 5: " << result << endl;  
- +  
-    return 0;+    return 0;  
  }  }
  
 </​code>​ </​code>​
 +
 +===== Przykładowy program wykorzystujący algorytmy count i count_if =====
 +{{count_count_if2.cpp}}
  
  --- //​[[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