Why is std::equal_to useful?
The C++ standard library provides std::equal_to
. This function object invokes operator==
on type T
by default.
What's the benefit of using std::equal_to
? Could you provide an example where std::equal_to
is useful?
Solution 1:
To be used in algorithms. It provides a functor with operator() on it, and thus can be used generically.
Specific (and contrived) example, as asked in comments:
// compare two sequences and produce a third one
// having true for positions where both sequences
// have equal elements
std::transform(seq1.begin(), seq1.end(), seq2.begin(),
std::inserter(resul), std::equal_to<>());
Not sure who might need it, but it is an example.
Solution 2:
Having std::equal_to
is very useful because it allows the equality comparison to be used as a functor, which means that it can be passed as an argument to templates and functions. This is something that isn't possible with the equality operator ==
since operators simply cannot be passed as parameters.
Consider, for example, how it can be used with std::inner_product
, std::find_first_of
and std::unordered_map
.