যে কোনও এবং সকল ধরণের "স্ট্রিং রেফারেন্স" এবং "অ্যারে রেফারেন্স" প্রস্তাবগুলির উদ্দেশ্য হ'ল ডেটা অনুলিপি করা এড়ানো যেটি ইতিমধ্যে অন্য কোথাও মালিকানাধীন এবং যার মধ্যে কেবল একটি পরিবর্তন-না-করা প্রয়োজন। string_view
প্রশ্নে এক ধরনের প্রস্তাব নয়; আগে বলা হয়েছিল string_ref
এবং array_ref
খুব।
পয়েন্টার-থেকে-প্রথম-উপাদান এবং কিছু বিদ্যমান ডেটা অ্যারে বা স্ট্রিংয়ের আকারের জুড়ি সংরক্ষণ করার ধারণাটি সর্বদা ।
এই ধরণের ভিউ-হ্যান্ডেল শ্রেণিটি সুলভ মানের দ্বারা পাস করা যেতে পারে এবং সস্তা সাবস্ট্রিংয়ের ক্রিয়াকলাপ সরবরাহ করে (যা সাধারণ পয়েন্টার ইনক্রিমেন্ট এবং আকার সমন্বয় হিসাবে প্রয়োগ করা যেতে পারে)।
স্ট্রিংয়ের অনেকগুলি ব্যবহারের জন্য স্ট্রিংগুলির প্রকৃত মালিকানা প্রয়োজন হয় না এবং প্রশ্নযুক্ত স্ট্রিংটি প্রায়শই ইতিমধ্যে অন্য কারও মালিকানাধীন থাকে। সুতরাং অপ্রয়োজনীয় অনুলিপিগুলি এড়িয়ে দক্ষতা বৃদ্ধির একটি আসল সম্ভাবনা রয়েছে (আপনি যে সমস্ত বরাদ্দ এবং ব্যতিক্রমগুলি সংরক্ষণ করতে পারেন) তা ভাবেন।
মূল সি স্ট্রিংগুলি এমন সমস্যায় ভুগছিল যে নাল টার্মিনেটরটি স্ট্রিং এপিআইয়ের অংশ ছিল এবং সুতরাং আপনি অন্তর্নিহিত স্ট্রিং (একটি লা strtok
) কে পরিবর্তন না করে সহজেই সাবস্ট্রিং তৈরি করতে পারবেন না । সি ++ এ, দৈর্ঘ্য পৃথকভাবে সঞ্চয় করে এবং পয়েন্টার এবং আকারকে এক শ্রেণিতে আবদ্ধ করে সহজেই সমাধান করা হয়।
আমি যে সি ++ স্ট্যান্ডার্ড গ্রন্থাগার দর্শনের একটি বড় বাধা এবং বিচ্যুতিটি ভাবতে পারি তা হ'ল এই জাতীয় "রেফারেন্সিয়াল ভিউ" শ্রেণীর স্ট্যান্ডার্ড লাইব্রেরি থেকে সম্পূর্ণ আলাদা মালিকানা শব্দার্থবিদ্যা রয়েছে ics মূলত, স্ট্যান্ডার্ড লাইব্রেরির সমস্ত কিছু নিঃশর্তভাবে নিরাপদ এবং সঠিক (যদি এটি সংকলন করে তবে এটি সঠিক)। এই জাতীয় রেফারেন্স ক্লাস সহ, এটি আর সত্য নয়। আপনার প্রোগ্রামের নির্ভুলতা এই ক্লাসগুলি ব্যবহার করে এমন অ্যাম্বিয়েন্ট কোডের উপর নির্ভর করে। সুতরাং এটি পরীক্ষা করা এবং শেখানো আরও শক্ত।