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: 
 
        Reviewed by habeeb
        on 
        
1:38 م
 
        Rating: 

