• پایان فعالیت بخشهای انجمن: امکان ایجاد موضوع یا نوشته جدید برای عموم کاربران غیرفعال شده است

STL (Standart Template Library)

Arash_j13

Registered User
تاریخ عضویت
18 فوریه 2005
نوشته‌ها
778
لایک‌ها
2
محل سکونت
مشهد
می خوام اینجا یکم در مورد این کتابخانه بسیار زیبا با هم بحث کنیم و چیزا های تازه ای یاد بیگیرم اول بگم که اطلاعات من در مورد STL کامل نیست و بیشتر به صورت تجربی بدست اومده پس ممکنه اشتباهاتی هم توشون باشه

برای شروع بتهره یکم با STL و اجزاش اشنا بشیم
STL یک تکه کد بسیاز پپیچده است که استفاده کردن از اون بسیار ساده و برنامه رو بشکل بسیار قابل فهمی در می یراه
STL بیشتر برای پشتبانی ساختمان داده ها در C++ به وجود امده به طوری به راحتی می شه با STL بردار هایی با طول متغییر صف پشته و ... رو طراحی کرد یکی از معروف ترین کلاس های STL کلاس String هست که پشتیبانی از رشته را به صورت بسیار ساده به C++ اضافه می کنه

مهترین چیز در STL کانتینر (container) ها هستن اینها اشیا عی هستن که سایر اشیا رو نگه داری می کنن کانتینر ها انواع مختلفی دارن که بعدا سعی می کنم بیشتر در موردشون بگم اما به صورت کلی مفهوم نزدیگی بین کانتینر ها و آرایه ها وجو داره هم طوری که ارایه ها هم می تونستن ایا دیگیری رو درون خودشون نگه داری کنن

بخش مهم دیگری که در STL وجود داره تکرار کننده (Iterator) ها هستن با استفاده از اتکرار کننده می شه به اشیا درون کانتینر ها دسترسی داشت در حالت کلی مفهوم نزدیکی بین تکرار کننده و اشاره گر می وجوده داره

بخش بعدی الگوریتم ها STL هستن که بر روی کانتینر ها عمل می کنن و اعمال مورد نظر رو بر روی اونها انجام می دن


و یک نکته که لازم اضافه کنم اینکه تمام STL به صورت توابع و کلاس های قالب پیاده سازی شده و اونها می تونن بر روی هر نوع داده ابتدایی یا اشیایی که از روی کلاس ها اساخته می شن عمل کنن این یکی از مهمتریم مزایای STL هست

سعی می کنم در روز ها بعد بیشتر در مورد کلاس های STL بگم
 

Mehdi.T

کاربر فعال برنامه نویسی
کاربر فعال
تاریخ عضویت
30 سپتامبر 2005
نوشته‌ها
506
لایک‌ها
3
محل سکونت
In Search of Sunrise
container deque در حافظه به چه شکلي ذخيره ميشه ؟
مثل list پشت هم يا vector به صورت گسسته؟(البته اگر vector گسسته باشه ؟)
 

Arash_j13

Registered User
تاریخ عضویت
18 فوریه 2005
نوشته‌ها
778
لایک‌ها
2
محل سکونت
مشهد
الان دقیق یادم نیست یه نگاه به مراجه بندازم یه تستی هم بکنم جوابش رو بهتون می گم
 

Mehdi.T

کاربر فعال برنامه نویسی
کاربر فعال
تاریخ عضویت
30 سپتامبر 2005
نوشته‌ها
506
لایک‌ها
3
محل سکونت
In Search of Sunrise
راضي به زحمت نيستيم
تشکر
 

Arash_j13

Registered User
تاریخ عضویت
18 فوریه 2005
نوشته‌ها
778
لایک‌ها
2
محل سکونت
مشهد
صف مثل لیست ذخیره می شه البته لیست گسسته هست و بردار پیوسته برای بردار ابتدا یک کیلو بایت حافظه گرفته می شه بعدا اگه این حافظه کم بود یه بلوک به اندازه دوبرابر گرفته می شه بلوک قبلی توی این کپی می شه بعد حافظه قبلی ازد می شه اگه این بلوک هم کم بیاد باز همین روند ادامه پیدا می کنه
ولی لیست برای هر گره ای که اضافه می شه جدا حافظه می گیره البته من یه جایی خوندم این ساختار ها بسته به نوع کامپایلر ممکنه متفاوت باشه من مال GCC رو بررسی کردم
 

Mehdi.T

کاربر فعال برنامه نویسی
کاربر فعال
تاریخ عضویت
30 سپتامبر 2005
نوشته‌ها
506
لایک‌ها
3
محل سکونت
In Search of Sunrise
بخاطره اینه نمیشه به لیست با استفاده از [] دسترسی داشت ؟
 
بالا