1. برمجة
13

ما هو ال Iterators الموجودة بلغة ال c++ ,انا ادرس هيكلة البيانات وتوجد ال Iterators فى درس Linked List فما فائدتها وشكرا

  • أحمد مصطفى عبد الله
  • 2014-05-01T22:29:35+00:00
  • رابط مختصر

التعليقات

عرض جميع التعليقات
18
ياسر
  • 2014-05-02T03:42:12+00:00
  • أضف ردا
    • رابط مختصر

تستخدم Iterators للتنقل بين عناصر الـ Object بطريقة أسرع وأفضل من الطريقة التقليدية. لنفترض أن لديك LinkedList list. وتريد طباعة كل عناصر القائمة. من الممكن إستخدام الأسلوب التقليدي:

for(int i=0; i<list.size(); i++){
    cout << list.get(i) << endl;
}

هذه الطريقة غير فعالة بسبب أن كل مرة تستدعي فيها (get(i تحتاج أن تبدأ من بداية القائمة (head) وتستمر بالبحث عن العنصر i بإستخدام pointer يشير إلى العنصر القادم (node.next) حتى تصل إلى العنصر i. إذاً ما الحل؟ بكل بساطة يمكن تخزين reference يشير إلى آخر عنصر تمت زيارته في القائمة في iterator. هذه الطريقة تضمن وقت أقل للبحث داخل القائمة وكذلك تحافظ على reference بشكل خاص (encapsulation) يضمن عدم عبث المستخدم بالبيانات. وهذا مثال:

for (List<int>::iterator it= list.begin(); it!= list.end(); ++it){     
    cout << (*iter)  << endl;
}

بعد كل عملية طباعة، it سينتقل إلى العنصر القادم في LinkedList دون الحاجة إلى البدء من أول عنصر (head) والبحث من جديد. وتذكر أن LinkedList تحتاج إلى implementation ودعم لـ iterator.

مصادر:

http://www.cplusplus.com/ar...
http://www2.hawaii.edu/~esb...
http://stackoverflow.com/qu...

برمجة

مجتمع للمبرمجين من جميع المستويات لتبادل المعرفة والخبرات. ناقش لغات البرمجة المختلفة، الحلول البرمجية، والمشاريع.

25.6 ألف متابع

أطلق موقعك الإلكتروني في دقائق

صمم موقعك كاملا بالسحب والإفلات بدون خبرة برمجية، واحجز مكانك على الإنترنت.

أنشئ موقعك الآن

انسخ هذا الرابط:

تنبيه