C++الكلاس stack
- تعريف الكلاس stack
- دوال الكلاس stack
- أمثلة شاملة حول التعامل مع الكلاس stack
تعريف الكلاس stack
يستخدم لإنشاء كائن يمثل حاوية تخزن العناصر التي نضيفها فيها بشكل متسلسل فوق بعضها البعض مما يجعلك قادر فقط على التعامل مع العنصر الموجود في أعلاها.
طريقة تخزين العناصر في هذه الحاوية تعتمد أسلوب LIFO الذي هو اختصار لجملة Last In First out و التي تعني أن العنصر الأخير الذي يتم إضافته في الحاوية هو أول عنصر يمكن إخراجه منها كالتالي.
لاستخدام الكلاس stack - أي حتى تتمكن من إنشاء كائنات منه - يجب تضمين الملف #include<stack> لأنه موجود فيه.
بناء الكلاس
إذاً عند إنشاء كائن من الكلاس stack يجب أن نمرر له نوع البيانات الذي نريد تخزينه فيه مكان الباراميتر T
.
دوال الكلاس stack
الجدول التالي يحتوي على جميع دوال الكلاس stack.
الدالة مع تعريفها | |
---|---|
1 | bool empty()
تستخدم لمعرفة ما إن كان الكائن الذي قام باستدعائها فارغاً أم لا. ترجع false في حال كان يوجد فيه عنصر أو أكثر, و ترجع true إن لم يكن كذلك. |
2 | size_t size() تستخدم للحصول على عدد العناصر الموجودة في الكائن الذي قام باستدعائها. |
3 | reference& top() تستخدم لتغيير قيمة العنصر الموجود في أعلى الكائن الذي قام باستدعائها أو للحصول على قيمته. |
4 | void push(T& val)
تستخدم لإضافة عنصر جديد في أعلى الكائن الذي قام باستدعائها. مكان الباراميتر val نمرر العنصر الذي نريد إضافته. |
5 | void emplace(T& val)
تستخدم لإضافة عنصر جديد في أعلى الكائن الذي قام باستدعائها تماماً كالدالة push(). مكان الباراميتر val نمرر العنصر الذي نريد إضافته. |
6 | void pop() تستخدم لحذف أعلى عنصر موجود في الكائن الذي قام باستدعائها. |
7 | void swap(stack& anotherStack)
تستخدم لتبديل قيم عناصر الكائن الذي قام باستدعائها بقيم عناصر الكائن الذي نمرره لها. مكان الباراميتر anotherStack نمرر لها كائن من الكلاس stack يملك نفس نوع عناصر الكائن الذي قام باستدعائها. |
أمثلة شاملة حول التعامل مع الكلاس stack
في كل مثال موضوع قمنا باستخدام دوال جديدة حتى تعرف كيف تستخدم جميع الدوال التي ذكرناها في الجدول.
في المثال التالي قمنا بتعريف كائن من stack مع تحديد أنه يمكن أن يحتوي على عناصر نوعها int.
بعدها قمنا بإضافة بعض العناصر فيه و من ثم طباعة عدد العناصر التي قمنا بإضافتها.
بعدها قمنا بعرض جميع القيم الموجودة فيه من خلال حلقة تستمر في التنفيذ طالما أن الكائن غير فارغ; في كل دورة في الحلقة كنا نقوم بعرض قيمة العنصر الموجود في الأعلى و من ثم نحذفه حتى نتمكن من الوصول للعنصر الموجود بعده مباشرةً.
ملاحظة: قمنا باستخدام الدالة push() لإضافة العناصر, الدالة size() لمعرفة عدد العناصر التي تم إضافتها, الدالة top() للحصول على قيمة العنصر الموجود في أعلى الكائن في كل مرة, الدالة pop() لحذف العنصر الموجود في أعلى الكائن و الدالة empty() لمعرفة ما إن كان الكائن يحتوي على عناصر بعد أم لا.
المثال الأول
سنحصل على النتيجة التالية عند التشغيل.
Stack size = 5 Popping out stack elements: 5 4 3 2 1
في المثال التالي قمنا بتعريف كائنين من stack مع تحديد أنه يمكن أن يحتويان على عناصر نوعها int.
بعدها قمنا بتبديل عناصرهما و من ثم طباعة القيم التي أصبحت موجودة في كلٍّ منهما.
ملاحظة: قمنا باستخدام الدالة swap() لتبديل قيمهما.
المثال الثاني
سنحصل على النتيجة التالية عند التشغيل.
Popping out stack1 elements: 8 7 6 5 Popping out stack2 elements: 4 3 2 1