Как с помощью std::count() подсчитать количество совпадений

Пытаюсь разобраться в работе std::count()

Дано: массив типа std::array<int,10> с произвольными 10-ю значениями.

Я хочу посчитать количество вхождений, допустим, цифры 5.

#include <algorithm>
#include <array>
#include <iostream>

int main()
{
    std::array<int,10> array;
    array = { 1,2,5,35,4,7,23,6,5,7};

    auto result{ std::count(array.begin(), array.end(), 5) };

    std::cout << "Array contains: " << result << " values.";
}

Как итог: Array contains: 2 values. В данном массиве находятся 2 совпадения, однако мне бы хотелось, чтобы алгоритм учитывал еще и число 35, т.к. 5 в него входит как цифра. Подскажите, как можно это реализовать?


Ответы (2 шт):

Автор решения: Harry
auto result{ std::count_if(array.begin(), array.end(), 
             [](int n) { for(;n;n/=10) if (n%10==5) return true; return false; })};

Будет считать количество чисел, в которых есть цифра 5.

Если надо все пятерки -

auto result = accumulate(array.begin(), array.end(), 0,
                         [](int s, int n) {
                             for(;n;n/=10)
                                 if (n%10==5) s++;
                             return s;
                         });
→ Ссылка
Автор решения: AR Hovsepyan

Может считать и std::count, если рассматривать числа посимвольно:

std::array<int, 10> array;
array = { 1,2,355,35,4,7,23,6,5,7 };
const int val = 5;
std::stringstream s;
std::copy(array.begin(), array.end(), std::ostream_iterator<int>(s));
std::cout << "Array contains: " << s.str() << '\n'
    << std::count(std::istream_iterator<char>(s), std::istream_iterator<char>(), val + '0') 
    << " values.";
→ Ссылка