Data Structure & STL (Part 3)
تحدثنا في مقالنا السابق عن Data Structure & STL (Part 2) ، والأن سنكمل حديثنا عن Data Structure & STL (Part 3) .
1- Deque (الرتل ثنائي الطرف):
يشبه ال Queue و لكنه يتيح الحذف و الإضافة من الجهتين .
و فيما يلي جدول يوضح التوابع التي تتعامل مع ال Deque :
قبل استخدام الdeque علينا أولا ان نقوم بتضمين المكتبة <deque> .
Function
|
Description
|
Begin()
|
يعيد هذا التابع Iterator على العنصر الأول
|
End()
|
يعبد هذا التابع Iterator على العنصر ما بعد الأخير
|
Front()
|
يمكنك هذا التابع من الوصول الى العنصر الأول
|
Back()
|
يمكنك هذا التابع من الوصول الى العنصر الأخير
|
Push_back()
|
إضافة عنصر في الطرف الخلفي
|
Pop_back()
|
حذف عنصر من الطرف الخلفي
|
Push_front()
|
إضافة عنصر في الطرف الأمامي
|
Pop_fornt()
|
حذف عنصر من الطرف الأمامي
|
Erase(a)
|
لحذف عنصر ، a : هو iteratorعلى العنصر المراد حذفه
|
Erase(a,b)
|
لحذف مجال ، a,b : هي iterator عل بداية ونهاية المجال
|
Insert(it,x)
|
إضافة عنصر (it : iterator الى العنصر المراد إضافة قيمة x قبله ،و x القيمة المراد اضافتها )
|
Insert(it,n,x)
|
إضافة n عنصر (it : iterator الى العنصر المراد إضافة قيمة x قبله ،و x القيمة المراد اضافتها ،و n عدد مرات اضافته )
|
Insert(it,begain,end)
|
إضافة مجموعة عناصر (it: iterator على العنصر المراد إضافة مجموعة قبله و begin هو iterator على مصفوفة يمثل بداية المجال المراد إضافته و end تمثل نهاية المجال)
|
Clear()
|
حذف جميع عناصر ال container
|
Size()
|
يعيد عدد العناصر الموجودة في container
|
مثال :
#include<iostream>
#include<deque>
using namespace std;
int main ()
{
deque <int> Dq;
for (int I =5; I > 0; i--)
Dq.push_back(i);
for (int i=0; i<5; i++)
cout<<Dq[i]<<" ";
cout<<endl;
for (deque<int>:: iterator it=Dq.begin(); it! =Dq.end (); ++it)
cout<<*it<<" ";
cout<<endl;
deque <int>: iterator it =Dq.begin();
Dq. insert(it,6);
for (deque<int>: :iterator it=Dq.begin(); it! = Dq.end (); ++it)
cout<<*it<<" ";
cout<<endl;
deque<int> dq1(3,300);
for (deque<int>:: iterator it= dq1.begin(); it! =dq1.end (); ++it)
cout<<*it<<" ";
cout<<endl;
dq1.swap(Dq);
for (deque<int>:: iterator it=dq1.begin();it!=dq1.end();++it)
cout<<*it<<" ";
cout<<endl;
for (deque<int>::iterator it=Dq.begin();it!=Dq.end();++it)
cout<<*it<<" ";
cout<<endl;
}
تنفيذ البرنامج :
الشكل التالي يوضح الية عمل المكدس في مثالنا السابق :
2- Vector:
هو عبارة عن مصفوفة أحادية البعد .
يعرف باشكل التالي :
Vector <type> name (size, initial_value);
Type: نوع عناصر ال Vector (int, double, char…. ) و ممكن ان يكون containr مثل (vector , string ,map) .
Name: اسم vector.
Size: حجم الفيكتور.
Initial Value: قيمة ابتدائية لعناصر ال vector.
Vector<Type> Name (size);
و يمكن تمرير مصفوفة في Vector من خلال تمرير عنوان اول عنصر في المصفوفة و عنوان اخر عنصر :
Vector<Type>name (array, array+5);
قبل استخدام الVector علينا أولا ان نقوم بتضمين المكتبة <vector> .
و فيما يلي جدول يوضح التوابع التي تتعامل مع ال vector :
Function
|
Description
|
Push_back()
|
(void)لإضافة عنصر الى نهاية ال Vector
|
Pop_back()
|
(void)لحذف عنصر من نهاية ال Vector
|
Back()
|
يرد قيمة آخر عنصر في ال Vector
|
Front()
|
يرد قيمة اول عنصر في ال Vector
|
Vector.erase(iterator Start,iterator end)
|
(void)يقوم بحذف عناصر من الموقع Start في الvector الى الموقع end-1
|
مثال :
#include<iostream>
#include<vector>
using namespace std;
int main ()
{
int a[]={1,2,3,4,5,6};
vector<int> v(a,a+6);
v.push_back(7);
for (int i=0; i<v. size (); i++)
cout<<v[i]<<" ";
v.pop_back ();
cout<<endl<<v. back () <<endl;
v.erase (v. begin () +1, v. begin () +3);
vector<int>::iterator t= v. begin ();
while (t! =v.end ())
{
cout<<(*t) <<" ";
t++;
}
cout<<endl<<"size = "<<v. size () <<endl;
}
تنفيذ البرنامج :
الشكل التالي يوضح الية عمل الرتل في برنامجنا :
Data Structure & STL (Part 3)
Reviewed by habeeb
on
1:38 م
Rating: