সেখানে মধ্যে একটি পার্থক্য আছে কি size_tএবং container::size_type?
আমি যা বুঝি তা size_tআরও সাধারণ এবং এটি যে কোনও ক্ষেত্রে ব্যবহার করা যেতে পারে size_type।
তবে container::size_typeনির্দিষ্ট ধরণের ধারকগুলির জন্য অনুকূলিত?
সেখানে মধ্যে একটি পার্থক্য আছে কি size_tএবং container::size_type?
আমি যা বুঝি তা size_tআরও সাধারণ এবং এটি যে কোনও ক্ষেত্রে ব্যবহার করা যেতে পারে size_type।
তবে container::size_typeনির্দিষ্ট ধরণের ধারকগুলির জন্য অনুকূলিত?
উত্তর:
মান পাত্রে সংজ্ঞায়িত size_typeকরার একটি typedef যেমন Allocator::size_type(বরাদ্দকরণ একটি টেমপ্লেট প্যারামিটার), যার জন্য std::allocator<T>::size_typeকরা হয় সাধারণত হতে সংজ্ঞায়িত size_t(অথবা একটি সামঞ্জস্যপূর্ণ টাইপ)। স্ট্যান্ডার্ড কেসের ক্ষেত্রে এগুলি একই রকম।
তবে, আপনি যদি কাস্টম বরাদ্দকারী ব্যবহার করেন তবে ভিন্ন ভিন্ন অন্তর্নিহিত ধরণের ব্যবহার করা যেতে পারে। তাই container::size_typeসর্বোচ্চ সাধারণত্ব জন্য বাঞ্ছনীয়।
size_tসময়গুলিতে ছিল এই বাধাগুলির বাস্তব বাস্তবায়ন। যাইহোক, সি ++ 11 এ এটি এখন মূলত: std::make_unsigned<X::difference_type>::typeডিফল্টরূপে সংজ্ঞায়িত । বাস্তবে যা সম্ভবত একই বা সামঞ্জস্যপূর্ণ হবে size_t।
size_type। কি দেয়?
size_tকোনও বস্তুর আকারের জন্য ব্যবহৃত প্রকার হিসাবে সংজ্ঞায়িত হয় এবং এটি প্ল্যাটফর্ম নির্ভর ।container::size_typeযে ধরনের কন্টেইনারে উপাদানের সংখ্যা জন্য ব্যবহৃত হয় হয় ধারক নির্ভরশীল ।সমস্ত stdপাত্রে এটি ব্যবহার size_tকরে size_typeতবে প্রতিটি স্বতন্ত্র গ্রন্থাগার বিক্রেতা এমন একটি প্রকার চয়ন করে যা এটি তার ধারকটির জন্য উপযুক্ত বলে মনে করে।
আপনি যদি তাকান Qt, আপনি দেখতে পাবেন যে size_typeQt ধারকগুলির সংস্করণ নির্ভর। Qt3 এ ছিল unsigned intএবং Qt4 এ এটি পরিবর্তন করা হয়েছিল int।
intবদলে ssize_t, intধরনের ছোট হয়।
জন্য std::[w]string, std::[w]string::size_typeসমান std::allocator<T>::size_type, যা সমান std::size_t। অন্যান্য ধারকগুলির জন্য, এটি কিছু প্রয়োগকে স্বাক্ষরবিহীন পূর্ণসংখ্যার ধরণের সংজ্ঞায়িত করে।
কখনও কখনও সঠিক টাইপটি রাখা দরকারী, সুতরাং উদাহরণস্বরূপ কেউ জানে যে প্রকারটি কোথায় (যেমন, করতে UINT_MAX) এমনভাবে আবৃত হয় যাতে কোনও এটির ব্যবহার করতে পারে। বা টেম্পলেটগুলির জন্য, যেখানে আপনাকে কার্যকরী / শ্রেণির টেম্পলেটগুলির জন্য দুটি একই ধরণের পাস করতে হবে।
প্রায়শই আমি size_tব্রেভিটি বা পুনরাবৃত্তকারীদের যাহাই হউক না কেন ব্যবহার করি । জেনেরিক কোডে, যেহেতু আপনি সাধারণত জানেন না যে আপনার টেম্পলেটটি কী ধরণের টেম্পলেট ব্যবহার করা হয় এবং কীভাবে এই ধারকগুলির আকার রয়েছে, তাই আপনাকে Container::size_typeযদি পাত্রে আকার সংরক্ষণ করতে হয় তবে আপনাকে টাইপডেফ ব্যবহার করতে হবে ।
N1804দেখেছি এবং আমিAllocator::size_typeএবং এর মধ্যে কোনও সম্পর্ক দেখতে পাচ্ছি নাsize_type। Libstdc ++ এ একটি তাত্ক্ষণিক নজরে এটির মতো কিছু দেখায় না anything