কম্পিউটার টিউটোরিয়াল

C++-এ বাইন্ড (bind) ফাংশন এবং প্লেসহোল্ডার (Placeholders)

এখানে আমরা C++-এ বাইন্ড (bind) ফাংশন এবং প্লেসহোল্ডার (placeholders) দেখব। কখনও কখনও আমাদের কিছু ফাংশনের অপারেশন আমাদের প্রয়োজন অনুযায়ী ম্যানিপুলেট করতে হয়। ডিফল্ট প্যারামিটার ব্যবহার করে কিছুটা ম্যানিপুলেশন করা যায়।

C++11-এ একটি নতুন ফিচার আনা হয়েছে, যেটি বাইন্ড (bind) ফাংশন। এটি আমাদেরকে সহজে solche ম্যানিপুলেশন করতে সাহায্য করে। এই ফিচারগুলো ব্যবহার করতে হলে হেডার ফাইল ব্যবহার করতে হয়।

বাইন্ড ফাংশন প্লেসহোল্ডারদের সাহায্যে পজিশন এবং আর্গুমেন্ট সংখ্যা নির্ধারণ করে ফাংশনটিকে ডিজায়ার আউটপুট অনুযায়ী মডিফাই করতে সাহায্য করে।

প্লেসহোল্ডার হলো নেমস্পেস যা একটি ফাংশনে একটি ভ্যালুর পজিশন ডিটেক্ট করে। প্লেসহোল্ডার _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++-এ std::vector এবং std::array-এর পার্থক্য

  2. C++-এ ভার্চুয়াল ফাংশন এবং পিউর ভার্চুয়াল ফাংশনের পার্থক্য

  3. C++-এ ফ্রেন্ড ক্লাস এবং ফাংশন

  4. C++-এ endl এবং \n এর তুলনা