यहां हम C++ में बाइंड फंक्शन और प्लेसहोल्डर्स देखेंगे। कभी-कभी हमें आवश्यकता के अनुसार कुछ कार्यों के संचालन में हेरफेर करने की आवश्यकता होती है। हेरफेर के कुछ सार प्राप्त करने के लिए हम कुछ डिफ़ॉल्ट पैरामीटर का उपयोग कर सकते हैं।
सी ++ 11 में, एक नई सुविधा पेश की गई है, जिसे बाइंड फ़ंक्शन कहा जाता है। यह हमें इस तरह के हेरफेर को कुछ आसान तरीके से करने में मदद करता है। इन सुविधाओं का उपयोग करने के लिए, हमें <कार्यात्मक> शीर्षलेख फ़ाइल का उपयोग करना होगा।
प्लेसहोल्डर्स की मदद से बाइंड फ़ंक्शन वांछित आउटपुट के अनुसार फ़ंक्शन को संशोधित करने के लिए स्थिति, और तर्कों की संख्या निर्धारित करने में मदद करता है।
प्लेसहोल्डर नामस्थान हैं जो किसी फ़ंक्शन में किसी मान की स्थिति का पता लगाते हैं। प्लेसहोल्डर को _1, _2, _3 आदि द्वारा दर्शाया जाता है।
उदाहरण
#include <functional> #include <iostream> struct Foo { Foo(int num) : num_(num) {} void print_add(int i) const { std::cout << num_+i << '\n'; } int num_; }; void print_num(int i) { std::cout << i << '\n'; } struct PrintNum { void operator()(int i) const { std::cout << i << '\n'; } }; int main() { std::function<void(int)> f_display = print_num; f_display(-9); std::function<void()> f_display_42 = []() { print_num(42); }; f_display_42(); std::function<void()> f_display_31337 = std::bind(print_num, 31337); f_display_31337(); std::function<void(const Foo&, int)> f_add_display = &Foo::print_add; const Foo foo(314159); f_add_display(foo, 1); std::function<int(Foo const&)> f_num = &Foo::num_; std::cout << "num_: " << f_num(foo) << '\n'; using std::placeholders::_1; std::function<void(int)> f_add_display2= std::bind( &Foo::print_add, foo, _1 ); f_add_display2(2); std::function<void(int)> f_add_display3= std::bind( &Foo::print_add, &foo, _1 ); f_add_display3(3); std::function<void(int)> f_display_obj = PrintNum(); f_display_obj(18); }
आउटपुट
-9 42 31337 314160 num_: 314159 314161 314162 18