88. Prefer function objects over functions as algorithm and comparer arguments
Summary
Objects plug in better than functions: Prefer passing function objects, not functions, to algorithms. Comparers for associative containers must be function objects. Function objects are adaptable and, counterintuitively, they typically produce faster code than functions.
Discussion
First, function objects are easy to make adaptable, and always should be (see Item 89). Even if you already have a function, sometimes you have to wrap it in ptr_fun
or mem_fun
anyway to add adaptability. For example, you have to do this in order to build up more complex expressions using binders (see also Item 84):
The usual workaround is to insert ptr_fun
(or, for a member ...
Get C++ Coding Standards: 101 Rules, Guidelines, and Best Practices now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.