Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

إزالة العناصر

جزء من قسم Logic & Flow في رحلة C++ على Coddy — الدرس 38 من 56.

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

إليك كيفية إزالة عنصر من مجموعة (set):

std::set<int> numbers = {10, 20, 30, 40};
numbers.erase(20);  // يزيل العنصر 20

بعد استدعاء .erase(20)، ستحتوي المجموعة فقط على {10, 30, 40}. إذا حاولت مسح عنصر غير موجود في المجموعة، فلن يحدث شيء - تظل المجموعة دون تغيير ولا يحدث أي خطأ.

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

challenge icon

التحدي

سهل

قم بإنشاء برنامج يوضح كيفية إزالة العناصر من std::set باستخدام طريقة .erase(). سيختبر هذا التحدي فهمك لكيفية إزالة عناصر محددة بأمان من المجموعة وملاحظة النتائج.

سيتم توفير المدخلات التالية:

  • عدد صحيح n يمثل عدد العناصر التي سيتم إضافتها في البداية إلى المجموعة
  • ثم n من الأعداد الصحيحة ليتم إدراجها في المجموعة
  • عدد صحيح m يمثل عدد العناصر المراد إزالتها
  • ثم m من الأعداد الصحيحة التي تمثل العناصر المراد إزالتها من المجموعة

يجب أن يقوم برنامجك بما يلي:

  1. إنشاء std::set<int> فارغة
  2. قراءة عدد العناصر المراد إضافتها وإدراجها في المجموعة باستخدام .insert()
  3. طباعة حجم المجموعة الأولي بعد كل عمليات الإدراج
  4. قراءة عدد العناصر المراد إزالتها
  5. لكل عنصر مراد إزالته، استخدم .erase() لمحاولة الإزالة
  6. بعد كل محاولة إزالة، اطبع الحجم الحالي للمجموعة
  7. أخيرًا، قم بالمرور عبر العناصر المتبقية في المجموعة واطبعها بترتيب فرزها

استخدم تنسيق المخرجات الدقيق التالي:

حجم المجموعة الأولي:

Initial size: [size]

بعد كل محاولة إزالة:

After removing [number]: size = [current_size]

العناصر المتبقية النهائية:

Remaining elements: [element1] [element2] [element3] ...

تذكر أن .erase() تتعامل بأمان مع محاولات إزالة العناصر غير الموجودة في المجموعة - تظل المجموعة دون تغيير ولا يحدث أي خطأ. استخدم حلقة for المبنية على النطاق (range-based for loop) لطباعة العناصر المتبقية، وسيتم عرضها تلقائيًا بترتيب فرزها لأن المجموعات (sets) تحافظ على عناصرها في تسلسل مرتب.

ورقة مرجعية

استخدم .erase() لإزالة عنصر معين من مجموعة (set) من خلال توفير قيمته:

std::set<int> numbers = {10, 20, 30, 40};
numbers.erase(20);  // يزيل العنصر 20

إذا حاولت مسح عنصر غير موجود في المجموعة، فلن يحدث شيء - تظل المجموعة دون تغيير ولا يحدث أي خطأ، مما يجعل استخدام .erase() آمناً.

جرّب بنفسك

#include <iostream>
#include <set>
using namespace std;

int main() {
    // قراءة عدد العناصر المراد إضافتها
    int n;
    cin >> n;
    
    // إنشاء مجموعة فارغة
    set<int> mySet;
    
    // قراءة وإدراج n من العناصر
    for (int i = 0; i < n; i++) {
        int element;
        cin >> element;
        // إدراج العنصر في المجموعة
    }
    
    // قراءة عدد العناصر المراد إزالتها
    int m;
    cin >> m;
    
    // TODO: اكتب الكود الخاص بك أدناه
    // 1. طباعة حجم المجموعة الأولي
    // 2. لكل عنصر يراد إزالته، استخدم .erase() واطبع الحجم بعد كل عملية إزالة
    // 3. طباعة العناصر المتبقية في المجموعة
    
    return 0;
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Logic & Flow