Тема: count_if чи звичайний цикл?
Треба знайти максимальну кількість чисел із наданих кандидатів, bitwise AND яких не дорівнює нулю.
Це сьогоднішнє завдання з Leetcode.
Ось два рішення:
Перше зі звичайним циклом.
int largestCombination(const vector<int> &candidates) {
    if (candidates.size() == 1) return 1;
    int answer { 0 };
    for (int i = 0; i < 24; ++i) {
        int count {0};
        for (const auto& item: candidates){
            if (item & (1 << i)){
                ++count;
            }
        }
        answer = max(answer, count);
    }
    return answer;
}Друге з count_if.
int largestCombination(const vector<int> &candidates) {
    if (candidates.size() == 1) return 1;
    int answer { 0 };
    for (int i = 0; i < 24; ++i) {
        auto same_bit = [i](auto number) { return number & (1 << i); };
        int count = count_if(candidates.begin(), candidates.end(), same_bit);
        answer = max(answer, count);
    }
    return answer;
}Що з цього краще?
При перевірці синтаксису мені порадили використати count_if,
але я не помітив значної різниці в швидкості виконання програми.
 У мене не дуже з побітовими операціями поки що.