কম্পিউটার

C/C++ এ ল্যাম্বডা ফাংশনের তাৎপর্য


ল্যাম্বডা ফাংশন − Lambda হল ফাংশন হল একটি ইনলাইন ফাংশন যা মূল প্রোগ্রামের সুযোগের বাইরে কোনো বাস্তবায়নের প্রয়োজন হয় না।

Lambda ফাংশন সংরক্ষণ করার জন্য ভেরিয়েবল দ্বারা একটি মান হিসাবেও ব্যবহার করা যেতে পারে। ল্যাম্বডাকে একটি বস্তু হিসাবে উল্লেখ করা যেতে পারে যা ফাংশন দ্বারা কল করা যেতে পারে (যাকে ফাংশন বলা হয় )।

যখনই কম্পাইলার ল্যাম্বডা ফাংশনের একটি সংজ্ঞার সম্মুখীন হয়, তখন এটি সাধারণত ল্যাম্বডার জন্য একটি কাস্টম অবজেক্ট তৈরি করে।

একটি ল্যাম্বডা ফাংশনের একটি সাধারণ ফাংশনের চেয়ে বেশি কার্যকারিতা রয়েছে, উদাহরণস্বরূপ, ব্যবহৃত ভেরিয়েবলগুলি ক্যাপচার করার জন্য এটির একটি ক্যাপচারিং পদ্ধতি রয়েছে। যাইহোক, ক্যাপচার করা ভেরিয়েবলটিকে অবজেক্টের সদস্য হিসেবে ধরা হয়।

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

[ ] - ক্যাপচার করুন

( ) - প্যারামিটার (ঐচ্ছিক)

- রিটার্ন ভ্যালু(ঐচ্ছিক)

{...} - ফাংশন বডি।

ল্যাম্বডার সিনট্যাক্স

[ ]( int a) -> int { return a-1 ;};

ক্যাপচার – একটি ক্যাপচার হল একটি ক্লজ যার মাধ্যমে ল্যাম্বডা ফাংশন সেই নির্দিষ্ট সুযোগ বা নেস্টেড ব্লকে উপলব্ধ ভেরিয়েবলগুলিতে অ্যাক্সেস দিয়েছে৷

আমরা দুটি পদ্ধতি ব্যবহার করে একটি উপলব্ধ ভেরিয়েবলের মান ক্যাপচার করতে পারি,

  • নাম দ্বারা অবজেক্ট ক্যাপচার করা – নাম দিয়ে বস্তুটিকে ক্যাপচার করা ল্যাম্বডা ফাংশনের একটি স্থানীয় অনুলিপি তৈরি করে।

আমরা নিম্নলিখিত উদাহরণ -

দিয়ে এই ধারণাটি বুঝতে পারি
int main(){
   set s;
   //Adding the elements to set
   int i=20;
   for_each(s.begin(),s.end(), [i](T& elem){
      cout<<elem.getVal()*i<<endl;
   }
}

উপরের উদাহরণে, ল্যাম্বডা ফাংশনের স্থানীয় অনুলিপি তৈরি করে মানটি ক্যাপচার করা হয়।

  • রেফারেন্স দ্বারা অবজেক্ট ক্যাপচার করা - রেফারেন্স দ্বারা একটি অবজেক্ট ক্যাপচার করা ল্যাম্বডা ফাংশনের প্রসঙ্গকে ম্যানিপুলেট করে। এইভাবে ফাংশন অবজেক্ট বা ল্যাম্বডা ফাংশন দ্বারা ক্যাপচার করা মান পরিবর্তন করা যেতে পারে।

আমরা নিম্নলিখিত উদাহরণ দিয়ে এটি বুঝতে পারি -

int main(){
   sets;
   //Adding elements to the set
   int result=0;
   for_each(s.begin(),s.end(), [&result](&T elem){ result+= elem.getVal();});
   cout<<result<<endl;
}

সদস্য ফাংশনের ভিতরে ল্যাম্বডা

আমরা জানি যে একটি ল্যাম্বডা ফাংশন যেকোনো স্বাভাবিক ফাংশনের ভিতরে একটি প্যারামিটার হিসাবে ব্যবহার করা যেতে পারে। উদাহরণস্বরূপ,

class func{
public:
   func(set<T>s): s1(s){}
   void func(){
      remove_if(s1.begin(),s1.end(), [this](int i) ->bool {return (i<level);});
   }
private:
   set<T>s1;
   int result;
};

  1. C/C++-এ rand() এবং srand()

  2. C/C++ এ putwchar() ফাংশন

  3. mbsrtowcs() ফাংশন C/C++ এ

  4. C/C++ এ সিস্টেম() ফাংশন