Data Structure & STL (Part 1)
تحدثنا في مقالنا السابق عن Big O Notation ، و الان سنكمل حديثنا عن مجموعة من الأشياء الهامة التي تهم أي مبرمج بشكل عام .
1- Strings (السلاسل المحرفية):
هي احدى أنواع البيانات التي تستخدم بشكل كبير، و يوجد مكتبة تحوي مجموعة من التوابع لتسهيل التعامل مع السلاسل المحرفية وهي مكتبة <string> ، بحيث بداية نقوم بتضمين هذه المكتبة ، ثم نقوم باستخدام هذه التوابع .
و الجدول التالي يوضح بعض التوابع الموجودة ضمن هذه المكتبة :
Function
Description
Begin()
يعيد هذا التابع iterator على العنصر الأول في String
End()
يعيد هذا التابع iterator على العنصر ما بعد الاخير في String
Clear()
حذف جميع أحرف String
Length()
يعيد طول ال String (عدد الاحرف)
Empty()
يعيد قيمة بوليانية 1 (اذا كان String فارغ)
Insert()
لاضافة محارف الى String
Erase()
لحذف محارف من String
Find()
لايجاد محتوى في String
C_str()
يعيد Pointer يمثل char*
2- Containers (الحاويات):
هي طريقة لتخزين ز تنظيم البيانات في الذاكرة، وتقسم الى ثلاثة اقسام:
1- Sequence Container (Vector , List , Deque)
2- Containers Adaptors (Stack , Queue , Priority_Queue)
3- Associative Containers (Set , Map)
سوف نتحدث عنها بشكل موسع في الجزء الثاني .
و فيما يلي جدول ضم اشهر ال Containers و اكثرها استخداما :
Container
Description
Advantages
Vector
مصفوفة قابلة لتمدد
قابلة للإضافة و الحذف من أي موقع فيا و الوصول الى العنصر عن طريق Index
Map
شجرة بحث ثنائي(مصفوفة يمكن الوصول لعناصرها من خلال مفاتيح من الي نوع )
قابلة للوصول الى العناصر من خلا مفتاح من أي نوع بتعقيد لوغارتمي والإضافة و الحذف بتعقيد لوغارتمي
Set
شجرة بحث ثنائي (مجموعة عناصر مرتبة تصاعديا البحث فيها ثنائي)
مرتبة ، و قابلة للإضافة و الحذف و البحث بتعقيد لوغارتمي
Queue
طابور
تنظيم الداتا على شكل طابور(الداخل أولا يخدم اولا)
Dequeue
طابور
سريعة في الحذف و الإضافة عند الأطراف
Stack
مكدس
لا يمكن لوصول الى محتوياتها الا من الطرف الخلفي (الداخل أخيرا يخدم اولا)
اهم التوابع التي تتشارك بها معظم ال Containers :
Function
Description
Begin()
يعيد هذا التابع iterator على العنصر الأول في Container
End()
يعيد هذا التابع iterator على العنصر ما بعد الاخير في Container
Clear()
حذف جميع عناصر ال Container
Size()
يعيد عدد العناصر الموجودة في ال Container
Empty()
يعيد قيمة بوليانية 1 (اذا كان Container فارغ)
3- Iterators (كائنات التكرار):
هي تعميم لمفهوم المؤشرات و هي تشير الى العناصر الموجودة في الحاويات .
مثلا في Set لا بمكننا الوصول الى العناص رعن طريق Index ، هنا تاتي فائدة Iterator للتنقل بين عناصر Set .
و بالتالي تفيد في الحصول على مرجعية لعناصر الحاويات كما المؤشرات تماما .
4- Pair (الزوج):
بنية تتالف من عنصرين متلازمين ، تعرف بالشكل التالي :
Pair<type,type> name ;
Type : نوع العنصر (int ,char,string…..) .
Name : اسم الزوج .د
مثال :
pair<int,string> p = make_pair(1,”Oxygen”);
cout<<p.first<<” “<<p.second<<endl;

0 التعليقات :
Post a Comment