الحاويات الديناميكية في لغة البرمجة سي بلس بلس STL Components

الكاتب: سامي -
الحاويات الديناميكية في لغة البرمجة سي بلس بلس STL Components
"مفهوم ال STL في لغة البرمجة  ++C:
الفئات الرئيسية للحاويات الديناميكية في لغة البرمجة سي بلس بلس:
الحاويات المتعاقبة (Sequence Containers):
الحاويات الترابطية Associative Containers:
Container Adaptors:
الحاوية الترابطية الغير مرتبة (Unordered Associative Containers):
ما الفرق بين المصفوفة العادية و الحاوية الدينامكية:
الكلاسات الرئيسية الموجودة في STL في لغة البرمجة سي بلس بلس:
مفهوم ال STL في لغة البرمجة  ++C:

 

(STL) في لغة البرمجة (++C) هي عبارة عن إختصار ل (Standard Template Library) وهي عبارة عن مكتبة ضخمة تحتوي على مجموعة من الدوال والكلاسات (Classes) الجاهزة، والتي تستخدم لتخزين مجموعة من القيم بشكل سهل جداً والذي يجعل التعامل معها أمر سهل للغاية من ناحية إضافة عناصر فيها أو حذف عناصر منها أو تحديث قيم عناصرها وترتيب عناصرها والبحث فيها، وهي تحتوي على مجموعة من المكونات:

 

حاويات (Containers).

 

خوارزميات (Algorithms).

 

دوال (Functions).

 

متواليات (Iterators).

 

الفئات الرئيسية للحاويات الديناميكية في لغة البرمجة سي بلس بلس:

 

الحاويات المتعاقبة (Sequence Containers):

 

وهي الحاوية التي تخزن العناصر التي نضيفها فيها بشكل متسلسل وراء بعضها البعض مع إعطاء لكل عنصر رقم يُسمى (Index) وكأنها مصفوفة عادية.

 

الحاويات الترابطية Associative Containers:

 

وهي الحاوية التي تخزن العناصر التي نضيفها فيها بشكل جدول، حيث أن كل عنصر نضيفه فيها يحتوي على مفتاح (Key) وقيمة (Value).

 

Container Adaptors:

 

وهي الحاوية التي تخزن العناصر التي يضيفها المستخدم  بشكل متسلسل مع القدرة على الوصول إليها، بحسب الترتيب الذي تم فيه إدخالها بأسلوب (FIFO) أو بأسلوب (LIFO) أو بحسب الأولوية المعطات لعناصرها.

 

الحاوية الترابطية الغير مرتبة (Unordered Associative Containers):

 

وهي الحاوية التي تخزن العناصر التي يضيفها المستخدم فيها على شكل (Buckets)، ممّا يجعل عملية الوصول إليها سريع جداً.

 

ما الفرق بين المصفوفة العادية و الحاوية الدينامكية:

 

في حالة إنشاء المصفوفات العادية فيجب على المستخدم تحديد عدد عناصرها لحظة إنشائها حتى يتم حجز مساحة ثابتة لها في الذاكرة و من بعدها يتم التعامل معها، أمّا في حالة الحاويات الدينامكية فإنه يتم حجز مساحة في الذاكرة للعنصر الذي تضيفه فيها في نفس اللحظة، وعند حذف عنصر معين يتم حذف  المساحة المحجوزة له ممّا يجعل عملية تنفيذ البرنامج تتم بوقت أسرع.

 

وفي المصفوفة العادية يتم التعامل مع عناصرها فقط من خلال رقم العنصر (Index)، أما في الحاويات الدينامكية فيوجد دوال عديدة نستخدمها للتعامل مع العناصر.

 

الكلاسات الرئيسية الموجودة في STL في لغة البرمجة سي بلس بلس:

 

الكلاس الاستخدام
array  يستخدم  هذا الكلاس لإنشاء كائن يمثل مصفوفة متطورة مقارنة بالمصفوفة العادية، حيث أن التعامل معها يكون بشكل مرن أكثر لأن المستخدم يستطيع معرفة عدد عناصرها والحصول على قيمة أول وآخر عنصر فيها بكل سهولة.
vector يستخدم هذا الكلاس لإنشاء كائن يمثل حاوية يتم تخزين العناصر التي يضيفها المستخدم فيها بشكل متسلسل مع إعطاء كل عنصر منهم رقم (Index)، ويشبه هذا الكلاس المصفوفة العادية إلى حد ما و لكن الفرق الأساسي بينهما أن حجمه ليس ثابتاً.
forward_list ويستخدم هذا الكلاس لإنشاء كائن يمثل حاوية تخزن العناصر التي نضيفها فيها بشكل متسلسل مع إعطاء كل عنصر منهم عنوان العنصر الذي يليه في الذاكرة حتى يتم الحفاظ على الترتيب الذي تمت فيه عملية التخزين.
list يستخدم هذا الكلاس لإنشاء كائن يمثل حاوية تخزن العناصر التي يضيفها المستخدم بشكل متسلسل مع إعطاء كل عنصر منهم عنوان العنصر الذي يسبقه وعنوان العنصر الذي يليه في الذاكرة حتى يتم الحفاظ على الترتيب الذي تم فيه تخزينهم، ولتتمكن من التنقل بين العناصر بالإتجاهين من العنصر الأول إلى الآخر وبالعكس تماماً.
stack يستخدم هذا الكلاس  لإنشاء كائن يمثل حاوية تستخدم لتخزين العناصر التي يضيفها المستخدم بشكل متسلسل بأسلوب (LIFO) الذي يعني أن العنصر الذي يدخل أولاً يخرج أخيراً.
queue يستخدم هذا الكلاس لإنشاء كائن يمثل حاوية حيث بقوم بتخزين العناصر التي يضيفها المستخدم بشكل متسلسل وراء بعضها البعض بأسلوب (FIFO) الذي يعني أن العنصر الذي يدخل أولاً يخرج أولاً.
priority_queue يستخدم هذا الكلاس لإنشاء كائن يمثل حاوية تقوم بتخزين العناصر التي يضيفها المستخدم ويكون ذلك بترتيب معين، حيث يتم وضع العنصر الذي يملك القيمة الأكبر في البداية والعنصر الذي يملك القيمة الأصغر في النهاية، بالإضافة إلى أنه يسمح لك بالوصول لأعلى وأدنى قيمة.
deque يستخدم هذا الكلاس لإنشاء كائن يمثل حاوية تخزن العناصر التي يضيفها المستخدم بشكل متسلسل مع إعطاء كل عنصر رقم (Index)، ممّا يجعل المستخدم قادراً على الوصول إلى جميع عناصرها وإضافة عناصر جديدة في أي مكان فيها.
set يستخدم هذا الكلاس لإنشاء كائن يمثل حاوية تخزن العناصر فيها بشكل متسلسل وبترتيب معين حيث يتم وضع العنصر الذي يملك القيمة الأصغر في البداية، والعنصر الذي يملك القيمة الأكبر في النهاية أو العكس، بالإضافة إلى أنه لا يمكن تخزين قيم مكررة فيها
multiset يستخدم هذا الكلاس لإنشاء كائن يمثل حاوية تخزن العناصر بشكل متسلسل وبترتيب معين، حيث يتم وضع العنصر الذي يملك القيمة الأصغر في البداية والعنصر الذي يملك القيمة الأكبر في النهاية أو العكس ولا يمكن تخزين أي قيم مكررة فيها.
map يستخدم لإنشاء كائن يمثل حاوية تخزن العناصر التي نضيفها فيها بشكل جدول يتألف من عمودين حيث يتكون كل عنصر من مفتاح ( Key ) يوضع في العمود الأول، وقيمة ( Value ) توضع في العمود الثاني بالإضافة إلى أنها توفر إمكانية ترتيب العناصر بشكل تصاعدي على حسب قيم المفاتيح.
multimap ستخدم هذا الكلاس لإنشاء كائن يمثل حاوية تخزن العناصر التي يضيفها المستخدم بشكل جدول يتألف من عمودين حيث يتكون كل عنصر من مفتاح ( Key ) يوضع في العمود الأول، وقيمة ( Value ) توضع في العمود الثاني بالإضافة إلى أنها ترتب العناصر بشكل تصاعدي على حسب قيم المفاتيح مع الإشارة إلى أنه يمكن وضع نفس المفتاح لأكثر من عنصر.
unordered_set ويستخدم  هذا الكلاس لإنشاء كائن يمثل حاوية تخزن العناصر التي يضيفها المستخدم بترتيب معين، يتم تحديده من قبل دالة مخصصة لذلك إسمها (()Hash) حيث تقوم بالتأكد من قيم أي عنصر سيتم إدخاله لتحديد المكان الذي يجب وضعه فيه.
unordered_multiset ويستخدم هذا الكلاس لإنشاء كائن يمثل حاوية تقوم بتخزين العناصر بترتيب معين يتم تحديده من قبل دالة مخصصة لذلك إسمها (()Hash) حيث تقوم بالتأكد من قيم أي عنصر سيتم إدخاله لتحديد المكان الذي يجب وضعه فيه مع الإشارة إلى أنه يمكن تخزين قيم مكررة داخلها.
unordered_map  يستخدم لإنشاء كائن يمثل حاوية تخزن العناصر التي نضيفها فيها بشكل جدول يتألف من عمودين حيث يتكون كل عنصر من مفتاح ( Key ) يوضع في العمود الأول و قيمة ( Value ) توضع في العمود الثاني بالإضافة إلى أنها ترتب العناصر بالإعتماد على دالة مخصصة لذلك إسمها Hash() تقوم بالتشييك على مفتاح أي عنصر سيتم إدخاله لتحديد المكان الذي يجب وضعه فيها.
unordered_multimap يستخدم هذا الكلاس لإنشاء كائن يمثل حاوية يقوم بتخزين العناصر بشكل جدول يتألف من عمودين حيث يتكون كل عنصر من مفتاح ( Key ) يوضع في العمود الأول و قيمة ( Value ) توضع في العمود الثاني، بالإضافة إلى أنها ترتب العناصر بالإعتماد على دالة مخصصة لذلك إسمها (()Hash) حيث تقوم بالتشييك على مفتاح أي عنصر سيتم إدخاله لتحديد المكان الذي يجب وضعه فيها مع الإشارة إلى أنه يمكن وضع نفس المفتاح لأكثر من عنصر.

 

"
شارك المقالة:
544 مشاهدة
هل أعجبك المقال
0
0

مواضيع ذات محتوي مطابق

التصنيفات تصفح المواضيع
youtubbe twitter linkden facebook