التكرار باستخدام For Loop
جزء من قسم المنطق وتدفق التنفيذ في رحلة C++ على Coddy. الدرس 14 من 56.
الآن بعد أن عرفت كيفية الوصول إلى العناصر الفردية والتحقق من حجم vector، لنتعلم كيفية معالجة كل عنصر منهجيًا باستخدام traditional for loop. يجمع هذا الأسلوب بين طريقة .size() والوصول المعتمد على الفهرس لزيارة كل عنصر بالتسلسل.
تستخدم traditional for loop متغير فهرس يبدأ من 0 ويزداد حتى يصل إلى size الخاص بـ vector:
std::vector<std::string> names = {"Alice", "Bob", "Charlie"};
for (int i = 0; i < names.size(); i++) {
std::cout << names[i] << std::endl;
}في هذا المثال، يضمن شرط i < names.size() في loop ألّا نتجاوز حدود vector، بينما يصل names[i] إلى كل عنصر باستخدام الفهرس الحالي. ستطبع loop كل اسم في سطر منفصل.
يُعد هذا النمط أساسيًا لمعالجة مجموعات البيانات. يمنحك متغير الفهرس i تحكمًا دقيقًا في العنصر الذي تعمل عليه، مما يجعله مفيدًا عندما تحتاج إلى معرفة موضع كل عنصر أو عندما تريد تعديل العناصر أثناء التكرار.
لاحظ أنه بعد انتهاء الحلقة، تصبح قيمة i مساويةً لـ names.size()، وفي هذه الحالة تساوي 3، لأن الحلقة تتوقف بمجرد أن يصبح الشرط i < names.size() خاطئًا.
التحدي
سهلأنشئ برنامجًا يستخدم traditional for loop لـ iterate through vector من أسماء product ويعرضها بتنسيق قائمة مُرقّمة.
سيتم توفير المدخلات التالية:
- عدد صحيح
nيمثّل number المنتجات - ثم
nمن السلاسل النصية التي تمثّل أسماء المنتجات
يجب أن يقوم برنامجك بما يلي:
- إنشاء
std::vector<std::string>باسمproducts - استخدام
push_back()لإضافة كل product من المنتجات وعددهاnإلى vector - استخدام traditional for loop مع متغير فهرس لـ iterate through vector
- في loop، استخدام method
.size()لشرط loop - استخدام operator القوسين المربعين
[]للوصول إلى كل عنصر بحسب الفهرس - طباعة كل product مع position number الخاص به، بدءًا من 1، بالتنسيق المحدد
استخدم تنسيق الإخراج التالي بالضبط:
Product 1: [first product name]
Product 2: [second product name]
Product 3: [third product name]
...يجب أن يبدأ for loop بالفهرس 0، وأن يستخدم i < products.size() كشرط، وأن يزيد قيمة i في كل تكرار. عند الطباعة، أضف 1 إلى الفهرس لعرض position numbers بدءًا من 1.
جرّب بنفسك
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main() {
// اقرأ عدد المنتجات
int n;
cin >> n;
// أنشئ vector لتخزين أسماء المنتجات
vector<string> products;
// اقرأ أسماء المنتجات وأضفها إلى الـ vector
for (int i = 0; i < n; i++) {
string product;
cin >> product;
products.push_back(product);
}
// TODO: اكتب الكود الخاص بك أدناه
// استخدم حلقة for تقليدية للتكرار عبر الـ vector
// واطبع كل منتج مع رقم موضعه
return 0;
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق وتدفق التنفيذ
1المؤشرات والذاكرة
ما هو المؤشر؟معامل العنوان (Address-Of)معامل الوصول للقيمة (Dereference)المؤشرات الفارغة (Null Pointers)المؤشرات والمصفوفاتالذاكرة الديناميكية باستخدام 'new'تحرير الذاكرة باستخدام 'delete'مراجعة - تمارين على المؤشرات2المتجهات (المصفوفات الديناميكية)
مقدمة إلى std::vectorإنشاء Vectorإضافة العناصرالوصول إلى العناصرحجم الـ Vectorالتكرار باستخدام For Loopالـ Range-Based For Loopإزالة العناصرملخص - عمليات الـ Vectorتدرّب بنفسك: مترجم C++ عبر الإنترنت