Skill

প্রজেক্ট ভিত্তিক উদাহরণ এবং বাস্তব প্রয়োগ

C++ Standard Library এর ব্যবহারিক উদাহরণ (Practical Examples of C++ Standard Library) - সি++ স্ট্যান্ডার্ড লাইব্রেরি (C++ Standard Library) - Computer Programming

316

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


উদাহরণ ১: ডেটাবেস ফিল্টারিং প্রজেক্টে Ranges এর ব্যবহার

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

কোড উদাহরণ:

#include <iostream>
#include <vector>
#include <ranges>
#include <string>

struct User {
    std::string name;
    int age;
    std::string city;
};

int main() {
    std::vector<User> users = {
        {"Alice", 30, "New York"},
        {"Bob", 20, "Chicago"},
        {"Charlie", 25, "Los Angeles"},
        {"David", 35, "San Francisco"}
    };

    // ২৫ বছরের বেশি বয়সের ব্যবহারকারী ফিল্টার করা
    auto filtered_users = users | std::ranges::views::filter([](const User& user) {
        return user.age > 25;
    });

    std::cout << "Users above 25 years of age:" << std::endl;
    for (const auto& user : filtered_users) {
        std::cout << "Name: " << user.name << ", Age: " << user.age << ", City: " << user.city << std::endl;
    }

    return 0;
}

আউটপুট:

Users above 25 years of age:
Name: Alice, Age: 30, City: New York
Name: David, Age: 35, City: San Francisco

এই উদাহরণে, std::ranges::views::filter ব্যবহার করে ২৫ বছরের বেশি বয়সের ব্যবহারকারীদের ডেটা ফিল্টার করা হয়েছে। এটি ডেটাবেস ম্যানেজমেন্ট প্রজেক্টে প্রয়োজনীয় ফিল্টারিং সহজ করে।


উদাহরণ ২: লাইব্রেরি ম্যানেজমেন্ট সিস্টেমে Function Template এর ব্যবহার

ধরুন, আমাদের একটি লাইব্রেরি ম্যানেজমেন্ট সিস্টেম রয়েছে যেখানে বিভিন্ন ধরনের বইয়ের তথ্য সংরক্ষণ করা হয়। বিভিন্ন প্রকারের বই যেমন Fiction, Science, এবং Biography টাইপের বইয়ের জন্য একই ফাংশন ব্যবহার করতে চাই, যা Function Template ব্যবহার করে করা যায়।

কোড উদাহরণ:

#include <iostream>
#include <string>

template <typename T>
void displayBookInfo(T bookType, const std::string& title, const std::string& author) {
    std::cout << "Book Type: " << bookType << std::endl;
    std::cout << "Title: " << title << std::endl;
    std::cout << "Author: " << author << std::endl;
    std::cout << "-----------------------" << std::endl;
}

int main() {
    displayBookInfo("Fiction", "The Great Gatsby", "F. Scott Fitzgerald");
    displayBookInfo("Science", "A Brief History of Time", "Stephen Hawking");
    displayBookInfo("Biography", "The Story of My Life", "Helen Keller");

    return 0;
}

আউটপুট:

Book Type: Fiction
Title: The Great Gatsby
Author: F. Scott Fitzgerald
-----------------------
Book Type: Science
Title: A Brief History of Time
Author: Stephen Hawking
-----------------------
Book Type: Biography
Title: The Story of My Life
Author: Helen Keller
-----------------------

এখানে Function Template ব্যবহার করে displayBookInfo ফাংশন তৈরি করা হয়েছে, যা বিভিন্ন প্রকারের বইয়ের তথ্য প্রদর্শন করতে ব্যবহার করা হয়েছে। এই ফাংশনটি কোডের পুনঃব্যবহারযোগ্যতা বাড়িয়ে দেয়।


উদাহরণ ৩: ই-কমার্স সাইটে প্রোডাক্ট ফিল্টারিং সিস্টেমে Class Template এর ব্যবহার

ধরুন, আমরা একটি ই-কমার্স সাইট তৈরি করছি যেখানে বিভিন্ন প্রোডাক্ট রয়েছে এবং আমরা প্রোডাক্ট ফিল্টারিং ব্যবস্থা তৈরি করতে চাই। আমরা Class Template ব্যবহার করে একটি জেনেরিক ফিল্টারিং ক্লাস তৈরি করতে পারি, যা বিভিন্ন প্রোডাক্ট ফিল্টার করতে সক্ষম হবে।

কোড উদাহরণ:

#include <iostream>
#include <vector>
#include <string>

template <typename T>
class ProductFilter {
    std::vector<T> products;
public:
    void addProduct(const T& product) {
        products.push_back(product);
    }

    void displayProducts() const {
        for (const auto& product : products) {
            std::cout << "Product: " << product << std::endl;
        }
    }
};

int main() {
    ProductFilter<std::string> electronicsFilter;
    electronicsFilter.addProduct("Smartphone");
    electronicsFilter.addProduct("Laptop");
    electronicsFilter.addProduct("Tablet");

    std::cout << "Electronics Products:" << std::endl;
    electronicsFilter.displayProducts();

    ProductFilter<std::string> clothingFilter;
    clothingFilter.addProduct("T-Shirt");
    clothingFilter.addProduct("Jeans");
    clothingFilter.addProduct("Jacket");

    std::cout << "\nClothing Products:" << std::endl;
    clothingFilter.displayProducts();

    return 0;
}

আউটপুট:

Electronics Products:
Product: Smartphone
Product: Laptop
Product: Tablet

Clothing Products:
Product: T-Shirt
Product: Jeans
Product: Jacket

এখানে ProductFilter নামে একটি Class Template তৈরি করা হয়েছে, যা বিভিন্ন ধরনের প্রোডাক্ট ফিল্টার করতে ব্যবহার করা হয়েছে। electronicsFilter এবং clothingFilter তৈরি করে আমরা বিভিন্ন প্রোডাক্ট ফিল্টার করেছি।


উদাহরণ ৪: ডেটা এনালিটিক্স প্রজেক্টে Ranges পাইপলাইন ব্যবহার

ধরুন, আমরা একটি ডেটা এনালিটিক্স প্রজেক্টে কাজ করছি যেখানে আমাদের একটি ডেটাসেটে বিভিন্ন ধরনের সংখ্যা রয়েছে এবং আমরা শুধু পজিটিভ সংখ্যা নির্বাচন করে প্রতিটি সংখ্যা দ্বিগুণ করতে চাই। এই ক্ষেত্রে Ranges এর পাইপলাইন ব্যবহার করে এটি সহজেই করা যায়।

কোড উদাহরণ:

#include <iostream>
#include <vector>
#include <ranges>

int main() {
    std::vector<int> data = {-10, 15, -20, 25, 30, -5};

    // পজিটিভ সংখ্যা ফিল্টার এবং দ্বিগুণ করা
    auto result = data | std::ranges::views::filter([](int n) { return n > 0; })
                       | std::ranges::views::transform([](int n) { return n * 2; });

    std::cout << "Filtered and Transformed Data:" << std::endl;
    for (int n : result) {
        std::cout << n << " ";
    }

    return 0;
}

আউটপুট:

Filtered and Transformed Data:
30 50 60

এখানে, std::ranges::views::filter এবং std::ranges::views::transform পাইপলাইন অপারেশন ব্যবহার করে আমরা ডেটাসেট থেকে পজিটিভ সংখ্যাগুলোকে ফিল্টার করে দ্বিগুণ করেছি। এটি ডেটা এনালিটিক্স প্রজেক্টে ডেটা প্রক্রিয়াকরণ সহজ করে।


উপসংহার

C++ এর Ranges মডিউল এবং Templates ব্যবহার করে প্রজেক্টের বাস্তব উদাহরণে:

  • Ranges এর মাধ্যমে কনটেইনারের ওপর বিভিন্ন ফিল্টারিং ও ট্রান্সফরমেশন কার্যক্রম সহজে করা যায়।
  • Function Template ব্যবহার করে একাধিক টাইপের জন্য একই ফাংশন পুনঃব্যবহার করা যায়।
  • Class Template ব্যবহার করে একই ক্লাসে বিভিন্ন টাইপের ডেটা হ্যান্ডলিং করা যায়।

এই উদাহরণগুলো থেকে বোঝা যায় যে Ranges এবং Templates ব্যবহার করে বড় ও জটিল প্রজেক্টে আরও দক্ষ ও পুনঃব্যবহারযোগ্য কোড লেখা সম্ভব।

Content added By
Promotion

Are you sure to start over?

Loading...