الدرس 6 من 10

المتّجهات

هدف الدرس

المتّجه std::vector وحلقة for على عناصره

01

الشرح

المتّجه (vector) قائمة يتغيّر حجمها مثل std::vector<int> scores = {72, 95, 64};، ويأتي من <vector>، والنوع المكتوب بين <> هو نوع عناصره. تضيف push_back(88) عنصرًا في آخره، وتُرجع size() عدد عناصره، وتسأل empty() هل هو فارغ، وscores[0] هو العنصر الأول لأنّ العدّ يبدأ من الصفر.

وتمرّ حلقة for على العناصر (range-based for) على كل عنصر دون عدّاد، مثل for (int s : scores)، وs فيها نسخة من العنصر، فإذا أردت أن تعدّل العناصر نفسها فاجعله مرجعًا: for (int& s : scores) { s += 5; }. وحين تمرّر المتّجه إلى دالة تقرؤه فقط فمرّره بالشكل const std::vector<int>&، وإلا نُسخت القائمة كلها في كل استدعاء.

وانتبه إلى أنّ [] لا تتأكّد من أنّ الموضع داخل القائمة، فـ scores[10] في قائمة من ثلاثة عناصر تقرأ من ذاكرة لا تخصّها، فتعطيك قيمة عشوائية أو توقف البرنامج دون رسالة واضحة، أما scores.at(10) فتتأكّد وترمي استثناءً (exception). والقائمة الفارغة ليس فيها [0] أصلًا، فاسأل empty() قبل أن تقرأ منها.

02

المطلوب

أكمل int maxOf(const std::vector<int>& v) لتُرجع أكبر عنصر، و0 إذا كان المتّجه فارغًا، ويجب أن تعمل صحيحًا حتى لو كانت العناصر كلها سالبة. وأكمل std::vector<int> evens(const std::vector<int>& v) لتُرجع متّجهًا جديدًا فيه الأعداد الزوجية وحدها بترتيبها، وvoid healAll(std::vector<int>& hps, int amount) لتزيد صحة كل لاعب في المتّجه نفسه بمقدار amount دون أن تتجاوز 100. ثم أضف في main العدد 100 إلى scores بـ push_back، واطبع سطرين: عدد النتائج: 5 من size()، ثم الأعلى: 100 من maxOf.

الفحوص

6 فحوص
  1. الدالة maxOf تُرجع أكبر عنصر
  2. الدالة maxOf تعمل مع الأعداد السالبة وحدها، وتُرجع 0 للفارغ
  3. الدالة evens تُبقي الأعداد الزوجية بترتيبها
  4. الدالة evens صحيحة مع السالب والصفر والمتّجه الفارغ
  5. الدالة healAll تزيد كل عنصر في المتّجه نفسه ولا تتجاوز 100
  6. طُبع «عدد النتائج: 5» ثم «الأعلى: 100»
03

تلميحات

0/3
دروس المسارأتممت 0 من 10

تُكتب بلغة C++ محرّكات الألعاب والمتصفحات وأنظمة التشغيل، لأنها سريعة وتمنحك تحكّمًا كاملًا.

مستواه مبتدئ، وفيه 10 دروس مجموع مدّتها ساعتان.

main.cpp
المخرجاتC++17 (GCC 9, Judge0)

يُترجَم كودك الآن ويُشغَّل على الخادم.

–/6

يُترجَم كودك الآن ويُشغَّل على الخادم.

تجد 6 فحوص في بطاقة «المطلوب».

دروس المسارأتممت 0 من 10

تُكتب بلغة C++ محرّكات الألعاب والمتصفحات وأنظمة التشغيل، لأنها سريعة وتمنحك تحكّمًا كاملًا.

مستواه مبتدئ، وفيه 10 دروس مجموع مدّتها ساعتان.