यहां हम C++ में बाइंड फंक्शन और प्लेसहोल्डर्स देखेंगे। कभी-कभी हमें कुछ फंक्शन्स के ऑपरेशन को अपनी आवश्यकता के अनुसार मैनिपुलेट करने की आवश्यकता होती है। हम कुछ डिफॉल्ट पैरामीटर्स का उपयोग करके मैनिपुलेशन का कुछ सार प्राप्त कर सकते हैं।
C++11 में, एक नई सुविधा पेश की गई है, जिसे बाइंड फंक्शन कहा जाता है। यह हमें इस तरह के मैनिपुलेशन को कुछ आसान तरीके से करने में मदद करता है। इन सुविधाओं का उपयोग करने के लिए, हमें <functional> हेडर फाइल का उपयोग करना होगा।
प्लेसहोल्डर्स की मदद से बाइंड फंक्शन पोजीशन और आर्गुमेंट्स की संख्या निर्धारित करने में मदद करता है ताकि फंक्शन को वांछित आउटपुट के अनुसार संशोधित किया जा सके।
प्लेसहोल्डर्स नेमस्पेस हैं जो फंक्शन में वैल्यू की स्थिति का पता लगाते हैं। प्लेसहोल्डर्स को _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);
return 0;
}
आउटपुट
-9 42 31337 314160 num_: 314159 314161 314162 18