Design Pattern --- Adapter
class Adaptee { public: // Interface. void operator()(int a, int b, int c) { cout <<a; } }; class Target { public: // Interface. virtual void operator()(int a) = 0; }; class Adapter : public Target { // data. Adaptee m_adaptee; public: Adapter(Adaptee &adaptee) : m_adaptee(adaptee) {} public: // Interface. virtual void operator()(int a) override { m_adaptee(a, 0, 0); } }; int main(int argc, char *argv[]) { auto arr = {1, 2, 3, 4, }; for_each(arr.begin(), arr.end(), Adapter(Adaptee())); // 可以和标准算法工作在一起了. return 0; }