3.1 - שאלות על
3.1.1 - דרישות על הטיפוס
הדרישות ההכרחיות היחידות שT צריך לקיים הם:
- קיום בנאי העקה. הסיבה לכך היא שיהיה ניתן לממש בנאי העתקה והשמה במחלקה . בלי בנאי העתקה, לא יהיה ניתן לקבל רשימה ולהעתיק את כל הערכים בה לרשימה אחרת.
- קיום אופרטור גדול מ-(""). המחלקה מבוססת על כך שיהיה ניתן להשוות בין ערכים על מנת שהיא תוכל לשמור על הסדר בין ערכיה.
3.1.2 - בעיות במימוש איטרטור לא
היה עלול להיווצר מצב שבו המשתמש ישנה את הערך שבאיטרטור, ובכך יוכל לגרום לתקלה במיון של הרשימה. לדוגמא אם מדובר ברשימת המספרים המשתמש יוכל לשנות את הערך השלישי ל-, ואז הרשימה תהיה ולאבד את הסדר של הרשימה.
3.1.3 - סינון רשימת מספרים שלמים
הפונקציה מקבלת פרדיקט בתור ומשתמשת בו על מנת ליצור רשימה חדשה המורכבת אך ורק מהערכים ברשימה המקורית עבורם הפרדיקט החזיר .
הרשימה החדשה הזו מוחזרת למשתמש .
מכיוון שהשתמשנו ב- נוכל לממש את המיון של המספרים השלמים בשתי דרכים:
- ניצור מחלקה אשר לה יהיה אופרטור כך:
כעת, נוכל לשלוח אובייקט בנוי מהמחלקה עם המספר שאינו צריך להיות ידוע בזמן קומפילציה.class DividedBy { public: DividedBy(int n) : n(n) { } bool operator()(int k) { return (k % n == 0); } private: int n; }; - נוכל להשתמש בפונקציות שילכדו משתנה כלשהו שיאחסן את הערך שאנו רוצים לבדוק חלוקה אליו ונשלח אותה לפונקציה כך:
int x; SortedList<int> list; // ... list.filter([x](int n) { return (n % x == 0); });