آرایه به خاطر ساختار داده ای که دارن معایب یا مزایایی دارن. بسته به الگوریتم برنامه می تونه استفاده از آرایه مفید یا مضر باشه. یکی از مشکلات (اگر اسمش رو بذاریم مشکل نه ویژگی) آرایه ها این هست که یک بار تخصیص حافظه داریم. این برای برنامه هایی که از آرایه به عنوان یک container برای رنج متفاوتی از داده ها کار می کنن جالب نیست. حتما تو برنامه نویسی به این نکته برخورد کردید که یک ثابت با عنوانی شبیه MAXSIZE تعریف کنید و آرایه ای با این سایز بسازید. در این موارد باید مقدار MAXSIZE را برابر بدترین حالت در نظر بگیرید. حالا اگر MAXSIZE مقدار بسیار بزرگی باشه و ما در یک برنامه مقادیر خیلی کمی از این حافظه را مصرف کنیم، حافظه رو هدر دادیم.
حتی اگر یک بار حافظه رو به درستی مصرف کنیم، (مثلا مقدار را از کاربر بگیریم و بعد از new استفاده کنیم) آرایه امکان تغییر سایز به ما نمی دهد.
در این موارد استفاده از لیست ها می تونه بهتر باشه. لیست ها این امکان رو به ما می دن که هر جا خواستیم حافظه رو آزاد کنیم یا بگیریم. چرا؟ چون برخلاف آرایه خونه های پشت سر همی از حافظه نیستند. عناصر بعدی (یا قبلی در بعضی موارد) توسط اشاره گر ها قابل دسترسی هستن. پس پیمایش عناصر یک لیست به صورت ترتیبی هست ولی پیمایش عناصر آرایه به صورت تصادفی (بر حسب اندیس) بسته به الگوریتم مسئله استفاده از هرکدوم می تونه بهتر باشه.
http://hpkclasses.ir/Courses/DataStructure/ds0300.html
http://hpkclasses.ir/Courses/DataStructure/ds0500.html