A predicate lambda returns true or false for a value.

predicate Standard algorithms often use predicate callables to decide which values match.

Lambda Predicates

threshold
lambda_predicates.cpp
Replay: real traced execution (multi-file project)
#include <algorithm>
#include <iostream>
#include <vector>

int main() {
    int threshold = 6;

    std::vector<int> scores{2, 5, 7, 9};
    int count = std::count_if(scores.begin(), scores.end(), [threshold](int score) {
        return score > threshold;
    });

    std::cout << "threshold=" << threshold << std::endl;
    std::cout << "count=" << count << std::endl;
    return 0;
}
#include <algorithm>
#include <iostream>
#include <vector>

int main() {
    int threshold = 3;

    std::vector<int> scores{2, 5, 7, 9};
    int count = std::count_if(scores.begin(), scores.end(), [threshold](int score) {
        return score > threshold;
    });

    std::cout << "threshold=" << threshold << std::endl;
    std::cout << "count=" << count << std::endl;
    return 0;
}
#include <algorithm>
#include <iostream>
#include <vector>

int main() {
    int threshold = 8;

    std::vector<int> scores{2, 5, 7, 9};
    int count = std::count_if(scores.begin(), scores.end(), [threshold](int score) {
        return score > threshold;
    });

    std::cout << "threshold=" << threshold << std::endl;
    std::cout << "count=" << count << std::endl;
    return 0;
}
  1. threshold ← 6, scores ← [2, 5, 7, 9], count ← 2

    5int main() {6    int threshold→ 6 = 6; //@threshold=3, 878    std::vector<int> scores→ [2, 5, 7, 9]{2, 5, 7, 9};9    int count→ 2 = std::count_if(scores[2, 5, 7, 9].begin(), scores.end(), [threshold](int score) {10        return score > threshold;11    });1213    std::cout << "threshold=" << threshold6 << std::endl;14    std::cout << "count=" << count2 << std::endl;15    return 0;16}
    outputthreshold=6
    count=2
  1. threshold ← 3, scores ← [2, 5, 7, 9], count ← 3

    5int main() {6    int threshold→ 3 = 3;78    std::vector<int> scores→ [2, 5, 7, 9]{2, 5, 7, 9};9    int count→ 3 = std::count_if(scores[2, 5, 7, 9].begin(), scores.end(), [threshold](int score) {10        return score > threshold;11    });1213    std::cout << "threshold=" << threshold3 << std::endl;14    std::cout << "count=" << count3 << std::endl;15    return 0;16}
    outputthreshold=3
    count=3
  1. threshold ← 8, scores ← [2, 5, 7, 9], count ← 1

    5int main() {6    int threshold→ 8 = 8;78    std::vector<int> scores→ [2, 5, 7, 9]{2, 5, 7, 9};9    int count→ 1 = std::count_if(scores[2, 5, 7, 9].begin(), scores.end(), [threshold](int score) {10        return score > threshold;11    });1213    std::cout << "threshold=" << threshold8 << std::endl;14    std::cout << "count=" << count1 << std::endl;15    return 0;16}
    outputthreshold=8
    count=1