std::sort Comparator: Function Pointer vs Lambda

Question 35 / 51 Correct so far: 0 (0 answered)

Snippet A

Func Ptr Sort

bool descending(int a, int b) { return a > b; }

void sortData(std::vector<int>& data, bool (*cmp)(int, int)) {
    std::sort(data.begin(), data.end(), cmp);
}

sortData(data, cmp);
Snippet B

Lambda Sort

void sortData(std::vector<int>& data) {
    std::sort(data.begin(), data.end(), [](int a, int b) { return a > b; });
}

sortData(data);
Shared test data (shared-setup)
constexpr int kDataSize = 4096;

static std::vector<int> makeData() {
    std::mt19937 rng(42);
    std::uniform_int_distribution<int> dist(0, 100000);
    std::vector<int> v(kDataSize);
    for (auto& x : v) x = dist(rng);
    return v;
}

static const std::vector<int> BASE_DATA = makeData();

Which snippet is faster?

Select the correct answer(s)