কম্পিউটার

C++11 এ ল্যাম্বডা এক্সপ্রেশন কি?


C++ STL-এ std::for_each-এর মতো দরকারী জেনেরিক ফাংশন রয়েছে। দুর্ভাগ্যবশত, এগুলি ব্যবহার করাও বেশ কষ্টকর হতে পারে, বিশেষ করে যদি আপনি যে ফাংশনটি প্রয়োগ করতে চান সেটি নির্দিষ্ট ফাংশনের জন্য অনন্য হয়। সুতরাং এই ফাংশনটি যা আপনি তৈরি করবেন সেই নেমস্পেসে থাকবে শুধুমাত্র সেই একটি জায়গায় ব্যবহার করা হচ্ছে। এর সমাধান হল বেনামী ফাংশন ব্যবহার করা।

C++ বেনামী ফাংশন তৈরি করার অনুমতি দিতে C++11-এ ল্যাম্বডা এক্সপ্রেশন চালু করেছে।

উদাহরণ

#include<iostream>
#include<vector>
#include <algorithm> // for_each

using namespace std;

int main() {
   vector<int> myvector;
   myvector.push_back(1);
   myvector.push_back(2);
   myvector.push_back(3);

   for_each(myvector.begin(), myvector.end(), [](int x) {
      cout << x*x << endl;
   });
}

আউটপুট

এটি আউটপুট দেবে −

1
4
9

(int x) ব্যবহার করা হয় আর্গুমেন্টগুলিকে সংজ্ঞায়িত করতে যেগুলি দিয়ে ল্যাম্বডা এক্সপ্রেশন বলা হবে৷ স্থানীয় স্কোপ থেকে ল্যাম্বডার অভ্যন্তরীণ স্কোপে ভেরিয়েবল পাস করতে [] ব্যবহার করা হয়, একে ক্যাপচারিং ভেরিয়েবল বলে। এই অভিব্যক্তিগুলি যদি সহজ হয় তবে তাদের প্রকারগুলি স্বয়ংক্রিয়ভাবে নির্ণয় করতে পারে। এছাড়াও আপনি নিম্নলিখিত সিনট্যাক্স −

ব্যবহার করে স্পষ্টভাবে টাইপ তথ্য প্রদান করতে পারেন

সিনট্যাক্স

[](int x) -> double {
   return x/2.0;
}

C++ ল্যাম্বডাসকে বিস্তারিতভাবে অন্বেষণ করতে এই StackOverflow থ্রেডে যান - https://stackoverflow.com/questions/7627098/what-is-a-lambda-expression-in-c11




  1. C# এ মেথড ওভারলোডিং কি?

  2. C# এ ওভারলোডিং কি?

  3. C# এ গণনা কি?

  4. পাইথনে ল্যাম্বডা বাঁধাই কি?