إعلان
دورة تطوير التطبيقات باستخدام لغة JavaScript في هذه الدورة ستتعلم لغة جافا سكريبت, استخدام مكتبة React.js, بناء API الموقع بواسطة Node.js, تطوير تطبيق جوال باستخدام React Native, و في نهاية الدورة ستتعلم تطوير تطبيق محادثة شبيه بتطبيق WhatsApp. تعلم الآن
دورة تطوير واجهات المستخدم في هذه الدورة ستتعلم لغة HTML و لغة CSS و لغة JavaScript. من ناحية التطبيق العملي ستتعلم طريقة بناء واجهة متجر إلكتروني مكون من ست صفحات, تحويل خمسة تصاميم PSD إلى صفحات ويب, بناء واجهة مستخدم تشبه موقع يوتيوب, بناء لوحة تحكم إحترافية. تعلم الآن
تطوير تطبيقات باستخدام لغة بايثون في هذه الدورة ستتعلم أساسيات البرمجة بلغة بايثون وصولاً إلى التعامل مع أشهر أطر العمل (Flask و Django) و ستتعلم كيف تبني متجر إلكتروني يمكن للمستخدمين البيع و الشراء من خلاله. تعلم الآن
دورة تطوير تطبيقات الويب باستخدام لغة PHP في هذه الدورة ستتعلم لغة PHP من الصفر, استخدام إطار العمل Laravel بشرح مفصّل و عملي, كيفية تطوير شبكة اجتماعية تشبه Instagram, بناء API لتطبيق جوال وفق أسلوب RESTful, تطوير موقع إعلانات مبوبة, تطوير نظام إدارة محتوى CMS كامل. تعلم الآن
دورة تطوير تطبيقات الويب باستخدام لغة Ruby في هذه الدورة ستتعلم البرمجة بلغة Ruby إنطلاقاً من أبسط المفاهيم وحتى بناء تطبيق حقيقي, إستخدام إطار العمل Ruby on Rails بشرح مفصّل و عملي, بناء تطبيق حقيقي عبارة عن شبكة اجتماعية تشبه تويتر, تطوير مجتمع الكتروني يشبه حسوب I/O. تعلم الآن
دورة علوم الحاسوب هذه الدورة معدة لتكون مدخل لعلوم الحاسوب و لغات البرمجة حيث ستتعرف فيها على أنظمة التشغيل و ستتعمق في نظام لينكس و في كيفية التعامل معه من خلال موجه الأوامر, بالإضافة إلى قواعد البيانات و أساسيات الشبكات و الخوادم و مبادئ الحماية والأمان في الويب. تعلم الآن

    C++ الحاويات الديناميكية (STL Components)

    مفهوم STL

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

    • حاويات (Containers).
    • خوارزميات (Algorithms).
    • دوال (Functions).
    • متواليات (Iterators).

    في هذا الدرس سنتعرف على جميع أنواع الحاويات الموجودة في هذه المكتبة و ستتعلم كيفية التعامل معها بتفصيل ممل.

    الحاويات الدينامكية

    الحاويات تنقسم لأربع فئات أساسية من ناحية الطريقة التي يتم فيها تخزين البيانات و من ثم إمكانية الوصول لها و كل فئة تحتوي على مجموعة كلاسات كالتالي.


    1- مفهوم Sequence Containers

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


    2- مفهوم Container Adaptors

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

    3- مفهوم Associative Containers

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


    4- مفهوم Unordered Associative Containers

    الحاوية التي تندرج تحت هذا النوع يقصد بها أن الحاوية تخزن العناصر التي نضيفها فيها على شكل Buckets مما يجعل الوصول إليها سريع جداً.



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

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

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

    الكلاسات الموجودة في STL

    الجدول التالي يحتوي على جميع الكلاسات الموجودة في STL و التي تمثل حاويات دينامكية.

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

    Eqla3Tech.com

    شروحات مكتوبة حول لغات البرمجة و تقنية المعلومات باللغة العربية مقدمة من إقلاع تك.

    لغة جافا لغة ++C قواعد البيانات نظام ويندوز نظام لينكس الشبكات تقنية المعلومات الأمن السيبراني

    الدورات

    أدوات مساعدة

    الأقسام

    دورات
    مقالات أسئلة مشاريع كتب