官术网_书友最值得收藏!

  • Mastering C++ Programming
  • Jeganathan Swaminathan
  • 161字
  • 2021-07-02 18:28:48

Functors

Functors are objects that behave like regular functions. The beauty is that functors can be substituted in the place of function pointers. Functors are handy objects that let you extend or complement the behavior of an STL function without compromising the object-oriented coding principles.

Functors are easy to implement; all you need to do is overload the function operator. Functors are also referred to as functionoids.

The following code will demonstrate the way a simple functor can be implemented:

#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>
using namespace std;

template <typename T>
class Printer {
public:
void operator() ( const T& element ) {
cout << element << "\t";
}
};

int main () {
vector<int> v = { 10, 20, 30, 40, 50 };

cout << "\nPrint the vector entries using Functor" << endl;

for_each ( v.begin(), v.end(), Printer<int>() );

cout << endl;

return 0;
}

Let's quickly compile the program using the following command:

g++ main.cpp -std=c++17
./a.out

Let's check the output of the program:

Print the vector entries using Functor
10 20 30 40 50

We hope you realize how easy and cool a functor is.

主站蜘蛛池模板: 调兵山市| 红河县| 上虞市| 平顺县| 昌图县| 富顺县| 屯昌县| 资中县| 禹州市| 凤阳县| 武邑县| 秦皇岛市| 卓尼县| 晋宁县| 炎陵县| 石家庄市| 南投县| 新晃| 施甸县| 盐山县| 桐城市| 泽普县| 白山市| 惠东县| 得荣县| 南皮县| 长丰县| 禹州市| 南宁市| 临夏县| 正安县| 临沧市| 芦山县| 德令哈市| 常熟市| 湘西| 靖安县| 尉氏县| 横峰县| 安阳市| 安达市|