مكتبة القوالب القياسية


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

Copyright 2016 Oxygen trailer

Designed by Oxygen Community