Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

C++ में बाइंड फंक्शन और प्लेसहोल्डर्स

यहां हम 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

  1. C++ में वर्चुअल फंक्शन और प्योर वर्चुअल फंक्शन के बीच अंतर

    निम्न तालिका वर्चुअल और प्योर वर्चुअल फंक्शन के बीच अंतर दिखाती है: Virtual Function शुद्ध आभासी कार्य वर्चुअल फंक्शन की अपनी परिभाषा कक्षा में होती है। शुद्ध वर्चुअल फ़ंक्शन की कोई परिभाषा नहीं है। घोषणा:वर्चुअल funct_name(parameter_list) {. . . . .}; घोषणा:आभासी funct_name(parameter

  1. C++ में फ्रेंड क्लास और फंक्शन

    किसी वर्ग के मित्र कार्य को उस वर्ग के दायरे से बाहर परिभाषित किया गया है लेकिन उसे कक्षा के सभी निजी और संरक्षित सदस्यों तक पहुंचने का अधिकार है। भले ही फ्रेंड फंक्शन के प्रोटोटाइप क्लास डेफिनिशन में दिखाई देते हैं, फ्रेंड्स मेंबर फंक्शन नहीं होते हैं। एक दोस्त एक फंक्शन, फंक्शन टेम्प्लेट, या मेंब

  1. सी++ में एंडल और \n के बीच तुलना

    \n एक नई लाइन को आउटपुट करता है (उपयुक्त प्लेटफॉर्म-विशिष्ट प्रतिनिधित्व में, इसलिए यह विंडोज़ पर \r\n उत्पन्न करता है), लेकिन std::endl करता है वही और धारा को फ्लश करता है। आम तौर पर, आपको तुरंत स्ट्रीम को फ्लश करने की आवश्यकता नहीं होती है और इससे आपको केवल प्रदर्शन खर्च करना पड़ेगा, इसलिए, अधिकां