مقدمة
في الدرس السابق تعرفنا على القوالب (Templates)، وعرفنا كيف تسمح لنا بكتابة كود عام يمكن استخدامه مع أنواع مختلفة من البيانات.
وتستخدم مكتبة C++ القياسية هذه الفكرة بشكل واسع من خلال STL.
---
ما هي STL؟
STL اختصار لـ Standard Template Library.
وهي مجموعة من الأدوات الجاهزة الموجودة ضمن مكتبة C++ القياسية، وتوفر هياكل بيانات وخوارزميات وأدوات تساعد على تطوير البرامج.
بدلًا من بناء كل شيء من الصفر، يمكن الاستفادة من الأدوات الموجودة فيها.
---
أهم أجزاء STL
تحتوي STL على عدة مكونات مهمة، من أبرزها:
Containers: لتخزين البيانات
Algorithms: لتنفيذ عمليات على البيانات
Iterators: للتنقل بين العناصر
Function Objects: لاستخدام وظائف مخصصة مع بعض الأدوات
وسنتعرف على هذه المفاهيم تدريجيًا.
---
ما هي الحاويات (Containers)؟
الحاويات هي هياكل بيانات تستخدم لتخزين مجموعة من العناصر.
وتوفر STL أنواعًا مختلفة من الحاويات، بحيث يمكن اختيار النوع المناسب حسب طبيعة المشروع.
---
vector
يعد vector من أشهر الحاويات في C++.
يشبه المصفوفة، لكنه يستطيع تغيير حجمه أثناء تشغيل البرنامج.
ولهذا يعتبر مناسبًا عندما لا يكون عدد العناصر معروفًا مسبقًا.
---
list
توفر list طريقة مختلفة لتخزين العناصر، وتناسب بعض الحالات التي تحتاج إلى عمليات إدراج وحذف متكررة داخل مجموعة البيانات.
---
map
تستخدم map لتخزين البيانات على شكل أزواج من:
مفتاح (Key) وقيمة (Value)
وهذا يسمح بالوصول إلى البيانات باستخدام مفتاح معين.
---
set
تستخدم set لتخزين مجموعة من القيم، وتتميز بأنها لا تسمح بتكرار العنصر نفسه بالطريقة المعتادة في هذه الحاوية.
---
اختيار الحاوية المناسبة
لا توجد حاوية واحدة مناسبة لكل المشاريع.
يجب اختيار الحاوية بناءً على:
طريقة الوصول إلى البيانات
عمليات الإدراج والحذف
الحاجة إلى ترتيب العناصر
وجود عناصر مكررة
طبيعة المشروع
فهم الفرق بين الحاويات يساعد على كتابة برامج أكثر كفاءة.
---
فوائد STL
من أهم فوائد STL:
توفير أدوات جاهزة
تقليل تكرار الكود
توفير هياكل بيانات موثوقة
تسريع تطوير البرامج
توفير خوارزميات جاهزة
دعم البرمجة العامة باستخدام Templates
---
استخدام STL في المشاريع
تستخدم STL في العديد من التطبيقات، مثل:
الألعاب
البرامج الهندسية
الخوارزميات
معالجة البيانات
التطبيقات الكبيرة
---
أخطاء شائعة عند المبتدئين
من الأخطاء الشائعة:
استخدام vector لكل شيء دون التفكير في البدائل
عدم معرفة الفرق بين الحاويات
استخدام حاوية لا تناسب طبيعة البيانات
محاولة بناء هياكل بيانات موجودة أصلًا في STL دون سبب
---
ملخص الدرس
تعرفنا في هذا الدرس على STL في C++، وعرفنا أنها توفر مجموعة من الأدوات الجاهزة، كما تعرفنا على مفهوم الحاويات وأمثلة مهمة مثل vector وlist وmap وset.
في الدرس الرابع والثلاثون سنتعرف على الخوارزميات (Algorithms) في STL، وسنفهم كيف يمكن استخدام الأدوات الجاهزة للبحث والترتيب ومعالجة البيانات.



