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