Using STL algorithms, is it better to pass a function pointer or a functor?

前端 未结 6 2107
臣服心动
臣服心动 2021-02-20 05:04

Which of these 2 methods is better and why?

Method 1:

void fun(int i) {
  //do stuff
}

...
for_each(a.begin(), a.end(), fun);

Method 2

6条回答
  •  走了就别回头了
    2021-02-20 05:36

    Functors may (and will) be trivially inlined – this isn't done for regular function pointers.

    Thus, functors have a real performance benefit which may be huge in tight loops. Furthermore, functors are generally more easily composable and in particuler play nicer with the STL: std::bindx doesn't work on function pointers, for instance.

    I hate how they clutter the code but given all the advantages, I'd prefer them over function pointers any time.

提交回复
热议问题