מכל (טיפוס נתונים מופשט)
במדעי המחשב, מְכָל (באנגלית: Container) הוא מחלקה, מבנה נתונים,[1][2] או טיפוס נתונים מופשט (ADT) שמופעו מכיל אוסף של אובייקטים אחרים. במילים אחרות, הם מאחסנים אובייקטים בצורה מאורגנת על פי כללים מסוימים. קיימים מימושים שונים של המכל (בצורת הורשה), שלכל אחד מהם גודל וסיבוכיות פעולות שונים, המאפשרים גמישות בבחירת המכל המתאים לכל בעיה.
פונקציות ומאפייני מכלים
מכלים מאופיינים בעזרת שלוש התכונות הבאות:
- צורת גישה:הדרך בה ניגשים לאובייקטים של המכל. הגישה יכולה להיעשות על פי אינדקס (כמו במערכים), לפי LIFO (כמו במחסנית), לפי FIFO (כמו בתורים) וכדומה.
- אחסון: צורת האחסון של האובייקט במכל. ניתן לאחסן העתק שלם של האובייקט (ברמות עומק שונות) או מצביע אל האובייקט.
- הזזה: צורת ההזזה של אובייקטים במכל.
מחלקות מכלים צפויות לממש את המתודות הבאות:
- יצירת מכל ריק (בנאי);
- הכנסת עצמים לתוך המכל;
- מחיקת אובייקטים מן המכל;
- מחיקת כל האובייקטים בתוך המכל;
- גישה אל העצמים במכל;
לעיתים מכלים ממומשים ביחד עם איטרטורים
סוגים
מכלים מסווגים כמכל חד-ערכי או מכל אסוציאטיבי.
מכל חד-ערכי מאחסן כל אובייקט באופן עצמאי. ניתן לגשת לאובייקטים בצורה ישירה או בעזרת איטרטורים.
מכל אסוציאטיבי מכיל זוגות של מפתח-ערך, כך שכל מפתח יכול להופיע רק פעם אחת במכל. המפתח משמש כאינדקס על מנת לזהות את הערך בחיפוש במכל.
מימושים
- .NET: System.Collections (MSDN)[1]
- Cּּּּּ++: הספרייה הסטדנרטית של השפה (SC++L)
- ג'אווה: Java collections framework
- Objective-C: חלק מהFoundation Kit
- PL/SQL, אוספים[3]
- פייתון: כוללת מכלים מובנים (רשימה, מילון, טאפל וכו') וניתן להרחיב בעזרת המודול collections הזה
- סקאלה: קיימים מכלים הניתנים לשינוי ושלא ניתנים לשינוי בחבילות scala.collection.mutable ו- scala.collection.immutable
ראו גם
קישורים חיצוניים
- מכל מבנה נתונים הכרזה ואתחול
- מכל מבני נתונים
- Python SortedContainers מודול . יישום מהיר של הרשימה הממוינת, מיון dict, ממוינים להגדיר סוגי נתונים בפייתון.
הערות שוליים
- ^ Paul E. Black (ed.), entry for data structure in Dictionary of Algorithms and Data Structures. US National Institute of Standards and Technology.15 December 2004. Accessed on Oct 04, 2011.
- ^ Entry data structure in the Encyclopædia Britannica (2009) Online entry Accessed on Oct 04, 2011.
- ^ "PL/SQL Collections and Records". נבדק ב-2013-04-20.
25866749מכל (טיפוס נתונים מופשט)