English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

دليل الأساسيات لمفهوم C++

تحكم العملية C++

الوظائف في C++

مجموعات C++ و

بنيات البيانات C++

مفاهيم C++ وكائنات

المؤشرات في C++

الوراثة في C++

دليل STL لمفهوم C++

دليل مرجع C++

Stack (الاست堆اد) في C++

في مجال علوم الكمبيوتر، نحن نعمل على أنواع مختلفة من البرامج. لكل منهم مجالهم وأدواتهم. بناءً على هدف إنشاء البرنامج والبيئة، لدينا العديد من بنيات البيانات المتاحة للاختيار. واحدة من بينها هي "الدفعة". قبل مناقشة هذا النوع من البيانات، دعونا نرى نحوها.

النحو

template<class T, class Container = deque<T> > class stack;

يستخدم هذا بنية البيانات تقنية LIFO، حيث يرمز LIFO إلى آخر إدخال أولاً الخروج. سيتم استخراج العنصر الذي تم إدراجه أولاً من نهاية البيانات، وهكذا. هناك عنصر يُدعى "top"، وهو العنصر الموجود في أعلى الموقع. تتم جميع العمليات الإدراج والإزالة على العنصر في أعلى عنصر الدفعة.

يُشير堆يد التطبيق إلى محول الحاويات.

البرنامج يجب أن يدعم قائمة العمليات التالية:

  • empty

  • size

  • back

  • push_back

  • pop_back

معامل النمط

Tيحدد النوع الذي سيحتفظ به مكون الكتلة.

Containerيحدد العنصر الداخلي للكتلة الذي يحتوي على عناصر الدفعة.

نوع الأعضاء

يقدم أدناه قائمة بأنواع أعضاء الدفعة مع وصفها القصير.

نوع الأعضاءوصف
value_typeيحدد نوع العنصر.
container_typeيحدد نوع الكتلة الأساسية.
size_typeيحدد نطاق حجم العنصر.

دالة

باستخدام الدوال، يمكن استخدام الكائنات أو المتغيرات في مجال البرمجة. توفر الدفعة العديد من الدوال التي يمكن استخدامها أو تعميمها في البرنامج.

دالةوصف
(constructor)يستخدم هذا الدالة لبناء كتلة الدفعة.
emptyيستخدم هذا الدالة لتجربة ما إذا كانت الدفعة فارغة. إذا كانت الدفعة فارغة، فإن هذه الدالة تعود بالقيمة true، وإلا تعود بالقيمة false.
sizeيستخدم هذا الدالة لتحديد حجم كتلة الدفعة، وهو مقياس عدد العناصر المحفوظة في الدفعة.
topيستخدم هذا الدالة لاستقبال العنصر في القمة للدفعة. يلعب هذا العنصر دورًا مهمًا جدًا، لأن جميع العمليات الإدراج والإزالة تتم على العنصر في القمة.
pushيستخدم هذا الدالة لإدراج عنصر جديد في القمة للدفعة.
popيستخدم هذا الدالة لإزالة العنصر، يتم إزالة العنصر من القمة في الدفعة.
emplaceيستخدم هذا الدالة لإدراج عنصر جديد في الدفعة فوق العنصر الحالي في القمة.
swapيستخدم هذا الدالة لتبادل محتويات المراكز المرجعية لكتلين.
relational operatorsتعين غير الأعضاء عمليات العلاقات المطلوبة للدفعة.
uses allocator<stack>كما يوحي الاسم، يستخدم غير الأعضاء مدير الذاكرة للدفعة.

مثال: برنامج بسيط يوضح استخدام وظائف الدفعة الأساسية.

#include <iostream>
#include <stack>
using namespace std;
void newstack(stack <int> ss)
{
	stack <int> sg = ss;
	while (!sg.empty())
	{
		cout << '\t' << sg.top();
		sg.pop();
	}
	cout << '\n';
}
int main ()
{
	stack <int> newst;
	newst.push(55);
	newst.push(44);
	newst.push(33);
	newst.push(22);
	newst.push(11);
	cout << ":آخر دفعة هي: ";
	newstack(newst);
	cout << "\n newst.size() : " << newst.size();
	cout << "\n newst.top() : " << newst.top();
	cout << "\n newst.pop() : ";
	newst.pop();
	newstack(newst); 
	return 0;
}

الإخراج:

أحدث القمم هي : 11 22 33 44 55
 newst.size() : 5
 newst.top() : 11
 newst.pop() : 22 33 44 55