موسسه خیریه محک

شهر ریاضی بازی-ریاضی

چرا به جای int از size_t استفاده کنیم؟

0 امتیاز
536 نمایش

برای کاربردهایی که اندازه رو بررسی می‌کنن در C++ از size_t استفاده شده. مثلاً برای اندازه‌ی بردار

vector<int> vec;
vec.push_back(1);
vec.push_back(2);
vec.push_back(3);
size_t size = vec.size();

در این مثال خروجی تابع size از بردارد size_t هست و ما هم برای ذخیره‌ی مقدار از size_t استفاده می‌کنیم. در حالی که به راحتی می‌شه از int یا unsigned int یا موارد مشابه استفاده کرد. چرا از size_t استفاده کنیم؟

هیچ پژوهش انسانی نمی‌تواند ادعای علمی بودن داشته باشد، مگر این‌که از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)
پرسیده شده یکشنبه ۲۰ مرداد ۱۳۹۲ در C++ توسط prodo  

1 پاسخ

0 امتیاز

استفاده از size_t حداقل به دو دلیل مفید هست.
۱) خوانایی برنامه رو بالا می‌بره. وقتی که شما قسمتی از یه کد رو ببینین که از size_t استفاده می‌کنه سریع متوجه می‌شین که قراره این مقدار اندازه‌ی یه چیزی باشه.
۲) قابلیت حمل برنامه رو افزایش می‌ده. با size_t برنامه‌ی شما در کامپایلرها و سیستم‌های مختلف به خوبی کار می‌کنه در صورتی که اگه از int استفاده کنین و در یه سیستم دیگه برای اندازه از long استفاده بشه، حداقل شما تبدیل اضافی رو به دست می‌آرین که خوب نیست.

مثلاً فرض کنید در یک سیستم ۶۴ بیتی که int در اون ۳۲ بیت هست، شما برای نگهداری اندازه‌ی string از int استفاده کنین.

string s;
int x = s.size();

یعنی نهایتاً 2^31 بیت (که در صورتی که بایت رو هشت بیتی در نظر بگیریم، 2^28 بایت). بنابراین اگه یه رشته طولش از این بزرگ‌تر باشه برنامه‌ی شما به مشکل می‌خوره. (این طول از لحاظ نظری در محیط ۶۴ بیتی ممکنه هرچند معمولاً اتفاق نمی‌افته).

اما size_t تضمین می‌کنه که اندازه‌ی مورد نظر رو در هر محیطی حفظ کنه و حداقل اندازه‌ی لازم رو داشته باشه. بنابراین در سیستم ۶۴ بیتی size_t معادل عدد صحیح ۶۴ بیتی تعریف می‌شه.

هیچ پژوهش انسانی نمی‌تواند ادعای علمی بودن داشته باشد، مگر این‌که از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)
پاسخ داده شده یکشنبه ۲۰ مرداد ۱۳۹۲ توسط prodo  
ویرایش شده یکشنبه ۲۰ مرداد ۱۳۹۲ توسط prodo