שאלה ב c++ בנוגע ל templates ו iterators - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

שאלה ב c++ בנוגע ל templates ו iterators


k-o-b-y

Recommended Posts

שלום לכולם

אני עובד כרגע על תוכנה (ב c++) שבה יש לי מחלקה שמקבלת את סוג ה container כטיפוס ב template:

template <class Cont> class MyClass
{
//..
}

כשה container הוא מה STL ותמיד של מחרוזות.

במחלקה יש לי פוקציה שמחזירה iterator לפי אינדקס:

template <class Cont> 
typename Cont::const_iterator MyClass<Cont>::GetIteratorOf(const Cont& c, int i)
{
Cont::const_iterator iter = c.begin();
while ((i-- > 0) && iter != c.end()
++iter;
return iter;
}

אני רוצה לעשות specialization עבור vector של מחרוזות כך שלא יעבור בלולאה אלא יבצע גישה בעזרת האינדקס. השאלה שלי היא איך אני יוצר iterator עבור איבר מסויים ב vector כך שאני אהיה בטוח שלא מתבצעת שום לולאה?

אני עובד עם VS2005.

תודה

קישור לתוכן
שתף באתרים אחרים

אני לא בטוח, אבל נראה לי שאתה יכול לממש את זה ככה:

template <> 
typename vector::const_iterator MyClass<vector>::GetIteratorOf(const vector& c, int i)
{
vector::const_iterator iter = c.begin();
iter += i;
return iter;
}

(סלח לי אם יש לי טעות ב-syntax של ה-specialization)

יכול להיות שזה יעבוד גם עבור קונטיינרים אחרים.

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...