اولین بار است که به این وب‌سایت می‌آیید. راهنما را مطالعه کنید!
x
موسسه خیریه محک

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

استفاده از vector یا لیست؟

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

برای یه آرایه‌ی معمولی که فقط می‌خوایم اندازه‌ش قابل تغییر باشه استفاده از کدوم بهتره؟ vector یا list؟

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

1 پاسخ

0 امتیاز

تفاوت‌های اصلی vector و list به نحوه‌ی ذخیره‌سازی اون‌ها برمی‌گرده.
بردار (vector) به صورت آرایه‌ی پویا ذخیره می‌شه. یعنی همه‌ی اعضاش پشت سر هم در حافظه ذخیره می‌شن. اما لیست (list) به صورت لیست پیوندی. بنابراین اعضاش به صورت پراکنده در حافظه قرار دارن.

این تفاوت ذخیره‌سازی باعث می‌شه تفاوت‌های کاربردی زیر پیش بیاد
۱- کارایی خواندن: چون بردار مثل آرایه‌ی پویا می‌مونه، دسترسی به همه‌ی اعضاش با یه سرعت انجام می‌شه و دسترسی تصادفی داره. یعنی سرعت دسترسی به عضو اول و وسط و آخرش یه چیزه. اما لیست چون به صورت لیست پیوندی ذخیره می‌شه، دسترسی به اعضاش با پیمایش اتفاق می‌افته که بدیهیه دسترسی به عضو اول در پیمایش سریع‌تر از عضو دوم و دسترسی به عضو دوم سریع‌تر از عضو اول هست.

۲- امکان درج و حذف: امکان درج و حذف از بردار وجود داره اما باید همه‌ی اعضا دوباره شیفت داده بشن به عقب تا خاصیت آرایه پویا بودنش حفظ بشه اما در لیست حذف و درج بین دو گره به راحتی بدون جابه‌جایی بقیه اعضا صورت می‌گیره.

۳- حافظه‌ی مصرفی هر عضو بردار فقط همون اندازه‌ی نوع داده است. مثلاً در vector<int> هر عضو برابر یه int حافظه می‌گیره. اما در لیست اشاره‌گرهایی به قبل و بعد هم وجود دارن یعنی list<int> اعضایی با حداقل سه عضو داره. ۱- خود عدد ۲- اشاره‌گر به بعد ۳- اشاره‌گر به قبل.

تفاوت‌های دیگه‌ای هم وجود داره. بنابراین موقع استفاده از هر یک از این دو تا باید به کاربرد نگاه کرد و با توجه به این تفاوت اصلی (ذخیره‌سازی) تصمیم گرفت.

معمولاً استفاده از بردار برای کاربردهای معمولی مناسب‌تر هست.

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