تفاوت vector و list - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

تفاوت vector و list

+2 امتیاز
سلام.

ما در کتابخانه stl در C++ هم vector داریم و هم list . آیا این 2 کاربردهای مختلفی دارند؟

 

ممنون
سوال شده آذر 12, 1392  بوسیله ی in_chand_ta (امتیاز 75)   4 18 23
دوباره تگ گذاری شد دی 30, 1393 بوسیله ی BlueBlade

1 پاسخ

+4 امتیاز
 
بهترین پاسخ

تفاوت هاشون به شرط زیر هستش.

وکتور :

  • حافظه پیوسته
  • فضای از قبل اشغال شده(capacty)
  • هر عنصر با اندازه نوع خودش فضا نیاز داره
  • هر با که عنصری درج کنید که capcity پر شده باشه نیاز به realloc دارید.
  • درج در انتها تا حدودی سربار نداره ولی درج در بین O(n) داره
  • حذف از انتها سربار نداره ولی حذف از بین O(n) هستش
  • بصورت تصادفی می تونیم به عناصر دستیابی داشته باشیم.
  • اگر شما عنصری را حذف و درج کنید iterator های قبلی شما نامعتبر هستند بخاطر قضیه realloc
  • و همانطور که در پست های قبلی گفتم به راحتی می تونیم یک آرایه را میشه با vector آینه کرد بخاطر تضمین پیوستگی حافظه در هر دو
لیست (لینک لیست) :
  • حافظه ناپیوسته
  • فضای از قبل اشغال نمیشه.
  • هر عنصر نیاز به حافظه اضافی برای اشاره گر به بعد و قبل داره.
  • شما با درج عنصر دیگه نیاز به realloc ندارید.
  • درج در هر جا سربار نداره و زمان ثابتی میبره.
  • حذف در هر جار سربار نداره و زمان ثابتی میبره.
  • ادغام دو لیست هم سربار نداره.
  • دسترسی تصادفی به عناصر ندارید بنابراین برای دسترسی به هر عنصر بایستی از اول یا آخر لیست بهش برسید(سربار زیاد)
  • اگر شما عنصری را حذف یا درج کنید iterator ها معتبر باقی می مانند.
  • شما نمی تونید یک آرایه را با لیست آینه کنید چون پیوستگی حافظه وجود نداره.

قاعدتاً وقتی درج و حذف زیادی در وسط توالی تون نیاز دارید بایستی از لیست استفاده کنید.

پاسخ داده شده آذر 12, 1392 بوسیله ی مصطفی ساتکی (امتیاز 21,998)   24 34 75
انتخاب شد آذر 12, 1392 بوسیله ی BlueBlade
...