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


18

تستخدم 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.

مصادر:


برمجة

المواضيع والنقاشات المتعلقة بالبرمجة بشكل عام او لغات البرمجة التي لايوجد لها مجتمعات فرعية.

24.6 ألف متابع