ساختارهای داده و STL (Data Structures & STL)
ساختارهای داده یعنی جعبه های نگهداری داده. کتابخانه STL هم مجموعه ای از این جعبه ها و ابزارهاست. با انتخاب درست، برنامه سریع تر می شود.
ساختارهای داده چیست؟
«ساختار داده (Data Structure)» روش چیدن داده هاست. مثل کمد مدرسه. هر کمد کاربردی دارد.
- Vector: شبیه آرایه، اما اندازه اش تغییر می کند.
- List: عنصرها زنجیروار پشت سرهم قرار می گیرند.
- Stack: قانون LIFO؛ آخرین وارد، اول خارج می شود.
- Queue: قانون FIFO؛ اول وارد، اول خارج می شود.
- Deque: دو سر باز؛ افزودن از هر دو طرف ممکن است.
- Set: فقط یکتاها را نگه می دارد.
- Map: جفت «کلید/مقدار» ذخیره می کند.
نکته: برای هرکدام باید هدرِ مناسب را اضافه کنی.
#include <vector>
#include <list>
#include <set>
#include <map>
#include <stack>
#include <queue>
نمونه ساده با وکتور
وکتور (Vector) مثل لیست خرید گوشی است. می توانی آخرش اضافه کنی.
vector<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
for (string car : cars) {
cout << car << "\n";
}
مفهوم های کلیدی در STL
«کانتینر (Container)» همان جعبه داده است. «ایتریتور (Iterator)» مثل انگشت اشاره است. «الگوریتم (Algorithm)» دستور کار روی داده هاست.
- کانتینرها: مثل وکتور و لیست.
- ایتریتور ها: پیمایش امن عنصرها.
- الگوریتم ها: توابعی مثل
sort()وfind().
گام های پیشنهادی انتخاب ساختار
- اندازه داده و تغییراتش را مشخص کن.
- نوع دسترسی را تعیین کن؛ ایندکس یا پیمایش.
- افزودن/حذف از کجا انجام می شود؟ ابتدا یا انتها.
نکته: برای وکتورها به صفحه وکتور برو. همچنین درباره ایتریتور بیشتر بخوان.
اگر دنبال مرور هستی، صفحه ساختارهای داده مرکز همین مباحث است.
جمع بندی سریع
- ساختارهای داده سرعت را تعیین می کنند.
- STL جعبه ها و ابزارها را فراهم می کند.
- انتخاب درست، کد را ساده تر می کند.
- وکتور برای رشد پویا عالی است.
- برای کلید/مقدار از Map استفاده کن.