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

C++-এ auto এবং decltype কী?


auto হলো C++11 এবং পরবর্তীতে একটি কীওয়ার্ড যা অটোমেটিক টাইপ ডিডাকশনের জন্য ব্যবহৃত হয়। টাইপ ইনফারেন্স বা ডিডাকশন বলতে একটি প্রোগ্রামিং ল্যাঙ্গুয়েজে একটি এক্সপ্রেশনের ডেটা টাইপ অটোমেটিক্যালি ডিটেক্ট করার প্রক্রিয়াকে বোঝায়। এটি কিছু শক্তিশালী স্ট্যাটিক্যালি টাইপড ল্যাঙ্গুয়েজে একটি ফিচার। উদাহরণস্বরূপ, আপনি একটি ভেক্টর (vector) এর ওপর ইটারেট করার জন্য একটি ইটারেটর তৈরি করতে চান, আপনি সেটি সহজে auto দিয়ে করতে পারেন।

উদাহরণ

#include <iostream>
#include <vector>
using namespace std;
int main() {
    vector<int> arr(10);
    for(auto it = arr.begin(); it != arr.end(); it++) {
        cin >> *it;
    }
    return 0;
}

উপরের প্রোগ্রামে, it অটোমেটিক্যালি std::vector<int>::iterator টাইপ পাবে।

decltype টাইপ স্পেসিফায়ার একটি নির্দিষ্ট এক্সপ্রেশনের টাইপ দেয়। auto ভেরিয়েবলে অ্যাসাইন করা ভ্যালু থেকে টাইপ অনুমান করে, অন্যদিকে decltype এটিকে পাস করা এক্সপ্রেশন থেকে টাইপ অনুমান করে। decltype দ্বারা রিটার্ন করা ভ্যালু সরাসরি অন্য একটি ভেরিয়েবল ডিফাইন করতে ব্যবহার করা যায়। উদাহরণস্বরূপ, উপরের কোডটি decltype দিয়ে নিচের মতো লিখা যায়:

উদাহরণ

#include <iostream>
#include <vector>
using namespace std;
int main() {
    vector<int> arr(10);
    for (decltype(arr.begin()) it = arr.begin(); it != arr.end(); it++) {
        cin >> *it;
    }
    return 0;
}

নোট: decltype দ্বারা ডেনোট করা টাইপ auto দ্বারা ডিডাক্ট করা টাইপ থেকে ভিন্ন হতে পারে। এই সূক্ষ্ম পার্থক্যগুলোর ওপর আরও জানতে আপনি এই ১২ পেজের এক্সপ্লানেশন পড়তে পারেন: Type Deduction in C++


  1. C++-এ auto কিওয়ার্ড কী করে?

  2. C++-এ signed এবং unsigned কিওয়ার্ড

  3. C++-এ টাইপ স্পেসিফায়ার কী?

  4. C++-এ টাইপ কোয়ালিফায়ার কী?