الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

[ تمت الإجابة ]إستفسار حول مكتبة القوالب المعيارية.

بدأه Abdeljalil في 18 أغسطس 2013 · 3 رد · 818 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

سلام،

لدي سؤال بخصوص مكتبة القوالب المعيارية.

السؤال بخصوص طريق الوصول لعناصر القوالب، أعرف أنه يمكننا إستعمال سواء المكررات iterator او رقم الفهرس [index[0 مع حاوية vector

لكن ماهي الطريقة الأسرع، أعني هل هناك فرق في السرعة؟ أو أن المترجم سيتعامل مع الطريقتين بنفس الكيفية!

سؤال آخر...

هل يمكن إستعمال الطريقتين (المكررات و رقم الفهرس) مع كل أنواع الحاويات غير الـ vector؟

أقصد إستعمالهما مع الـ list مثلا أو deque؟

هل هذا ممكن أم لا؟

تم تعديل هذه المشاركة بواسطة C++er في 18 أغسطس 2013 في 08:18

#2

أخى العزيز

 

  • بالنسبة لسؤالك الاول:

كل طريقة أخى ولها أستخدماتها, يعنى لو الكود يتطلب جلب العناصر كلها أستخدم iterator, أما لوالكود يتطلب جلب عنصر واحد بشكل مباشر أو عشوائى  فأستخدم المعامل [], يعنى الفكرة ليس فكرة أسرع وأبطئ الفكرة أن كل طريقة ولها أستخدامها .

 

  • بالنسبة لسؤالك الثانى:

vector = تدعم [] و iterator

deque = تدعم [] و iterator

list      = تدعم  iterator

1

||||||||||||||||||||||||||||||||||||


||||||||||||||||||||||||||||||||||||


egypt_coa.gif


||||||||||||||||||||||||||||||||||||


||||||||||||||||||||||||||||||||||||

#3
اقتباس

لكن ماهي الطريقة الأسرع، أعني هل هناك فرق في السرعة؟ أو أن المترجم سيتعامل مع الطريقتين بنفس الكيفية!

الـ vector مماثل للـ array فى طريقة تمثيله لمحتوياته - أى متتالية - و أغلب المترجمات تستخدم index مع data store بشكل مباشر

 

أما بالنسبة للـ iterator فتوجد 5 أنواع منها و جميعهم يمكن استخدامهم مع الـ vector حسب محتوياته و بشروط. الـ RandomAccessIterator تستخدم الـ subscript operator للوصول للمحتويات فى وقت ثابت. أى Iterator أخرى قد تستخدم أسلوب مختلف حسب نوعها.

 

اقتباس

هل يمكن إستعمال الطريقتين (المكررات و رقم الفهرس) مع كل أنواع الحاويات غير الـ vector؟

حسب نوعها، فمثلا list لا تحتوى على subscript operator و لهذا لايمكنك استخدام RandomAccessIterator معها و لكن يمكنك استخدام BidirectionalIterator.

 

 

و الله ولي التوفيق

تم تعديل هذه المشاركة بواسطة C++er في 18 أغسطس 2013 في 08:17

1

مدونتي: C++ Tips and Tricks

#4

شكرا جزيلا لكما لمساعدتكما.

لقد توضح كل شيء :D :D

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…