في لغة C، هناك طريقتان شائعتان للتكرار عبر ناقل: استخدام التكرارات أو استخدام المؤشرات. عند استخدام المؤشرات، من المهم مراعاة نوع متغير الفهرس.
تعد التكرارات طريقة مناسبة للتكرار عبر الحاوية. إنها توفر واجهة موحدة لأنواع مختلفة من الحاويات، وتسمح بالعبور الفعال للعناصر. توضح التعليمة البرمجية التالية كيفية التكرار عبر ناقل باستخدام التكرارات:
for (auto it = v.begin(); it != v.end(); it) { // do something with *it }
عند التكرار على متجه باستخدام المؤشرات، من المهم استخدام متغير فهرس موقّع. وذلك لأن المتجهات تتم فهرستها من 0 إلى size() - 1، ويمكن للمتغير الموقّع أن يمثل هذا النطاق بشكل طبيعي أكثر. في المثال التالي، يتم استخدام int الموقّع لفهرسة المتجه:
for (int i = 0; iلماذا يمكن أن يكون استخدام متغير فهرس غير موقّع خطيرًا
قد يكون استخدام متغير فهرس غير موقّع خطيرًا لأنه قد يؤدي إلى سلوك غير محدد إذا تجاوز الفهرس حجم المتجه. وذلك لأن المتغير غير الموقع يلتف عندما يصل إلى قيمته القصوى، وهذا يمكن أن يتسبب في أن يكون الفهرس سالبًا، وهو ليس فهرسًا صالحًا للمتجه.
في المثال التالي، int غير الموقع هو يُستخدم لفهرسة المتجه، وإذا كان حجم المتجه أكبر من الحد الأقصى لقيمة int غير الموقعة، فسوف يلتف الفهرس ويصبح سالبًا، مما يؤدي إلى سلوك غير محدد:
for (unsigned int i = 0; iالاستنتاج
عند التكرار على متجه، فمن الأفضل دائمًا استخدام متغير فهرس موقّع. وذلك لأنه يضمن أن الفهرس سيكون دائمًا ضمن النطاق الصالح للمتجه، ويتجنب احتمال حدوث سلوك غير محدد.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3