ما هو ال 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.

مصادر:

انا استخدمت loop ك iterators في لبرمجة Newton's_method و طريقة القاطع و ايضا طريقة الموقع الخاطىء

يمكن إعتبارها مثل loop

مثلا في الـ vector تستعمل

vector<int>::iterator iter = v.begin();

ثم تستعمل iter للوصل إلى كل عناصر v

ما علاقة الiterator بالset في الc++


برمجة

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

24.6 ألف متابع