std::string_view এবং এর সুবিধা

String Handling (স্ট্রিং ম্যানিপুলেশন) - সি++ স্ট্যান্ডার্ড লাইব্রেরি (C++ Standard Library) - Computer Programming

335

std::string_view C++17 এ প্রবর্তিত একটি ক্লাস যা স্ট্রিং বা স্ট্রিংয়ের অংশের অবজারভেশন বা রেফারেন্স প্রদান করে, মেমরিতে অতিরিক্ত কপি তৈরি না করে। এটি মূলত std::string এর তুলনায় কম মেমরি ও উচ্চ কর্মদক্ষতার জন্য ডিজাইন করা হয়েছে। std::string_view স্ট্রিং ডেটার কোনো মালিকানা নেয় না, বরং এটি শুধু সেই ডেটার একটি ভিউ প্রদান করে।


std::string_view কীভাবে কাজ করে?

std::string_view একটি অবজেক্ট, যা স্ট্রিংয়ের একটি রেফারেন্স ধরে রাখে এবং স্ট্রিংয়ের একাংশ বা পুরোটা পড়া বা কাজ করার জন্য ব্যবহার করা যায়। এটি মূল স্ট্রিং ডেটা পরিবর্তন না করেই স্ট্রিং-এর অংশে কাজ করতে দেয়। উদাহরণস্বরূপ, যদি আপনার বড় কোনো স্ট্রিং ডেটা থাকে এবং আপনি সেই ডেটার অংশে বারবার অ্যাক্সেস করতে চান, তাহলে std::string_view ব্যবহার করলে মেমরি ব্যবহারের পরিমাণ কমে যায়।


উদাহরণ

#include <iostream>
#include <string>
#include <string_view>

int main() {
    std::string text = "Hello, World!";
    std::string_view view(text); // `text` স্ট্রিং-এর উপর একটি ভিউ তৈরি করা

    // view এর কিছু অপারেশন
    std::cout << "Original String: " << view << std::endl;
    std::cout << "First 5 characters: " << view.substr(0, 5) << std::endl; // সাবস্ট্রিং তৈরি
    std::cout << "Length: " << view.length() << std::endl;

    return 0;
}

উপরে std::string_view এর মাধ্যমে মূল স্ট্রিং text এর উপর একটি ভিউ তৈরি করা হয়েছে এবং এতে কোনো নতুন মেমরি কপি তৈরি হয়নি। এতে view শুধুমাত্র text স্ট্রিংয়ের উপর একটি রেফারেন্স হিসাবে কাজ করছে।


std::string_view এর সুবিধা

১. মেমরি ব্যবহারের দক্ষতা: std::string_view মূল স্ট্রিংয়ের কোনো কপি তৈরি না করে সরাসরি সেই স্ট্রিংয়ের অংশে কাজ করে, যা মেমরি ব্যবহারের ক্ষেত্রে অনেক সুবিধা প্রদান করে। বড় স্ট্রিংগুলোর ক্ষেত্রে এটি অনেক কার্যকর।

২. প্রদর্শন ক্ষমতা বৃদ্ধি: মেমরি কপি না হওয়ায় অপারেশনগুলো দ্রুত সম্পন্ন হয়, যা কর্মদক্ষতা বাড়ায়। ফলে std::string_view ব্যবহার করলে পারফরম্যান্স বেড়ে যায়, বিশেষ করে যখন বড় স্ট্রিং বা ফাংশনের মাধ্যমে রিটার্ন করা সাবস্ট্রিং নিয়ে কাজ করা হয়।

৩. কনস্ট্যান্ট টাইম সাবস্ট্রিং অপারেশন: std::string_view ব্যবহার করলে সাবস্ট্রিং তৈরি করতে মেমরি অ্যালোকেশন প্রয়োজন হয় না। এটি সরাসরি মূল স্ট্রিং থেকে নির্দিষ্ট অংশের উপর ভিত্তি করে রেফারেন্স তৈরি করে।

৪. কোনো মালিকানা নেই: std::string_view মূল স্ট্রিং-এর ডেটার মালিকানা নেয় না, তাই এটি ব্যবহার করলে মেমরি ব্যবস্থাপনা আরও সহজ হয় এবং স্ট্রিং ম্যানিপুলেশনে বাড়তি চাপ কমে যায়।

৫. প্রতিস্থাপনযোগ্য: std::string এবং const char* এর মধ্যে সহজেই রূপান্তরযোগ্য, যা std::string_view কে বিভিন্ন ধরনের স্ট্রিং উৎস থেকে কাজ করতে সহায়ক করে।


কিছু গুরুত্বপূর্ণ বিষয়

  • std::string_view এর মালিকানা নেই, তাই মূল স্ট্রিংটি যতক্ষণ জীবিত থাকবে ততক্ষণই এর উপযোগিতা রয়েছে। মূল স্ট্রিং মুছে গেলে বা পরিবর্তিত হলে string_view এর রেফারেন্স অবৈধ হয়ে যাবে।
  • এটি শুধুমাত্র স্ট্রিং পড়ার জন্য ব্যবহার করা যায়, স্ট্রিংয়ের ভিউয়ের মাধ্যমে পরিবর্তন করা যায় না।

ব্যবহার ক্ষেত্র

  • ফাংশনের প্যারামিটার: যেখানে স্ট্রিং শুধু পড়ার জন্য প্রয়োজন এবং মেমরি কপি না করেও কাজ করা যাবে।
  • বড় স্ট্রিং ম্যানিপুলেশন: বড় স্ট্রিংয়ের অংশ নিয়ে কাজ করার সময় যেখানে বারবার সাবস্ট্রিং তৈরি করতে হবে।
  • অস্থায়ী বা ছোট স্ট্রিংয়ের ক্ষেত্রে: দ্রুত ও কম মেমরিতে কাজ করতে।

সংক্ষেপে

std::string_view মেমরি ও কর্মদক্ষতার দিক থেকে std::string এর চেয়ে অনেক বেশি সুবিধাজনক এবং এটি স্ট্রিং ম্যানিপুলেশনকে আরও দ্রুত ও কার্যকর করে তোলে। C++ প্রোগ্রামিংয়ে বড় স্ট্রিং বা স্ট্রিংয়ের একাংশ নিয়ে কাজ করার ক্ষেত্রে এটি খুবই উপযোগী।

Content added By
Promotion

Are you sure to start over?

Loading...