פורסם 2008 ביולי 1717 שנים מה זה איטרטור?ובבקשה אל תגידו לי שזה משמש למעבר על אוסף של אובייקטים כי זה לא ממש עוזר לי...ואיפה אני יכול למצוא מה יש בSTL?
פורסם 2008 ביולי 1717 שנים אבל זה מה שזה זה כמו שיש לך רכבת עם קרונות ובכניסה לכל קרון יש סיסמא שהיא דומה בכולם (אותו טיפוס) ויש אדם שיודע את הסיסמא ומכיר את הרכבת (הקונטיינר) וכאשר נותנים לו פקודה הוא עובר בין הקרונות ועושה בהן פעולה מסויימת (אותה פעולה) זה מין פוינטר שיודע לטייל בין האיברים של הקונטיינר שבעזרתו אתה מקבל גישה לכל אחד מה"קרונות" הפוינטר הזה מכיר את הקרונות , יודע את המרחק בניהם ויודע את סיסמאת הכניסה , לכן יש לו את האפשרות לדלג בניהם. לדוגמא לקונטיינר STL וקטור, יש איטרטור משלו לדוגמא מסוג אינטג'ר, זהו איטרטור שיודע לטייל על וקטור שמכיל אינטג'רים הוא מכיר את הקונטיינר וקטור (הרכבת) ויודע את המרחק בין קרון לקרון (מרחק בין אינטג'ר לאינטג'ר) לכן הוא יודע לאן לגשת ובאיזה עוצמה "לקפץ" בין קרון לקרון בעזרתו אתה יכול לגשת לכל קרון שאתה רוצה באותה הרכבת ולעשות בקרון פעולות או להוציא ממנו מידע. ניסיתי כמה שיותר ציורי מקווה שעזר ולא בילבל אותך עוד יותר ... מידע על STL : http://www.cplusplus.com/reference/stl/
פורסם 2008 ביולי 1717 שנים http://en.wikipedia.org/wiki/Iterator_patternמה אתה רוצה לדעת בדיוק לגבי איטרטור?איטרטור נועד למקרים שאתה רוצה לעבור על אוסף של אובייקטים, ואתה לא יכול להשתמש באינדקס. כשאתה עובר על אובייקטים ברשימה מאונדקסת (כמו מערך או vector) אז אתה יכול לגשת לאיברים ברשימה על פי המיקום שלהם, ולכן לרוץ עליה באמצעות אינדקס:for (int i = 0 ; i < myVector.size() ; i++){ // do something with myVector[i]}אבל מה קורה כשהאוסף שלך לא מאונדקסת (קרי, אתה לא יכול לגשת לאיבר ה-i ברשימה)? זה נכון כשיש לך רשימה מקושרת או אוספים לא סדורים, כגון map ו-set. במקרים כאלה, אתה צריך איטרטור כדי לעבור על האוסף:for (list<int>::iterator iter = myList.begin() ; iter != myList.end() ; iter++){ // do something with (*iter)}חוץ מזה, איטרטור הוא דבר יחסית גנרי. יש פונקציות וקלאסים ב-STL שנועדו לטפל באוספים מכל מיני סוגים, בלי חשיבות לטיפוס הספציפי שלהם. קח לדוגמה את הפונקציה count. הפונקציה סופרת את מספר האיברים באוסף מסוים שזהים לאובייקט נתון כלשהו. על מנת לא להגביל אותנו לטיפוס של האוסף, הפונקציה מקבלת פשוט איטרטור לתחילת האוסף ולסופו, ורצה עליהם. ככה היא יכולה לקבל איטרטור של map, vector, list ואפילו סתם של מערך (בהגדרה, מצביע הוא איטרטור למערך).לגבי STL, בנוסף ללינק שניתן מעליי, יש גם את זה:http://www.cppreference.com/index.htmlוגם ב-MSDN יש הרבה מידע:http://msdn.microsoft.com/en-us/library/cscc687y.aspx
פורסם 2008 ביולי 1717 שנים ההסבר שלי יותר ידידותי במיוחד עצם זה שהכנסת לו את המושג " design pattern " לנושא פעוט כמו איטרטור STL-י. בשביל להבין מה זה הiterator pattern צריך קודם להבין מה זה איטרטור.
פורסם 2008 ביולי 1717 שנים צודק, נתתי לינק לא נכון. התכוונתי לזה: http://en.wikipedia.org/wiki/Iterator בכל מקרה, ההסבר שלי כלל גם דוגמאות קוד תכלס
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.