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)
بواسطة habeeb
on
13:38:00
Rating:
No comments