В даній статті обговоримо алгоритм std::count з бібліотеки C++ STL.
template <class InputIterator, class T>
typename iterator_traits<InputIterator>::difference_type
count (InputIterator begin, InputIterator end, const T& val) ;
Даний алгоритм повертає кількість присутніх елементів з значенням val у проміжку [begin, end).
Приклади
Приклад #1
Розглянемо простий приклад використання count для визначення кількості певної букви у рядку.
#include <algorithm> /* усі алгоритми включно з find */
#include <iostream> /* об'єкт cout */
#include <string> /* клас string */
using namespace std ; /* пищемо усе без std */
/* головна функція програми */
int main (int argc, char** argv)
{
/* створюємо тестовий рядок символів
** на якому будемо виконувати досліди */
string example = "This is example string from www.kytok.org.ua." ;
/* буква, яку будемо шукати у рядку */
char s_char = 'w' ;
/* змінна буде містити кількість
** символів s_char у рядку example */
unsigned int cnt = 0 ;
cnt = count (example.begin (), example.end (), s_char) ;
/* виводимо у термінал повідомлення з кількістю входжень */
cout << "In string \""
<< example << "\" char '"
<< s_char
<< "' happens " << cnt << " times." << endl ;
return 0 ;
}
Після компілювання і виконання даної програми можна побачити результат:
Приклад #2
Розглянемо обрахунок кількості елементів у масиві елементів вбудованого типу int. В якості ітераторів виступають вказівники на тип int.
#include <algorithm> /* усі алгоритми включно з find */
#include <iostream> /* об'єкт cout */
#include <string> /* клас string */
using namespace std ; /* пищемо усе без std */
/* головна функція програми */
int main (int argc, char** argv)
{
/* створюємо піддослідний масив цілих знакових чисел */
int iArray [] = {1,3,5,7,11,7,5,1,3,1,17,19} ;
/* визначаємо кількість елементів у масиві iArray */
int iLen = sizeof(iArray)/sizeof(iArray[0]) ;
/* виконуємо обрахунок кількості
** елементів з значенням 1 у масиві iArray */
int cnt1 = count (iArray, iArray + iLen, 1) ;
/* виводимо результат у термінал */
cout << "There are " << cnt1 << " elements with value 1 int int array iArray." << endl ;
return 0 ;
}
Компілювання і виконання даного коду видасть наступний результат: