פורסם 2010 בינואר 1115 שנים ציינתי זה יוצר deep copy, שבהכרח משכפל את איברי התור.. ( בקריאה חוזרת, זה לא מה שהוא רצה ). off topic, למה לא הייתה ממליץ על זה? ( במצב שבו באמת דרוש העתק של האובייקט, ושל כל האיברים הפנימיים).
פורסם 2010 בינואר 1115 שנים מחבר אז הברירה היחידה היא לעשות remove ואז לעשות insert לערך בכל פעם לשתי תורים חדשים...?
פורסם 2010 בינואר 1115 שנים אם אתה רוצה לשכפל את התור, אז כן.אבל תנסה לחשוב על פתרון שלא ידרוש לשכפל את התור (הפתרון כן יצטרך תור עזר). off topic, למה לא הייתה ממליץ על זה? ( במצב שבו באמת דרוש העתק של האובייקט, ושל כל האיברים הפנימיים).כי זה כמו לנסוע לחיפה דרך אילת. אם כבר יש לך פונקציית סריאליזציה, אז מילא. אבל אם לא, אז פשוט באותה מידה לממש פונקציית Clone, שעושה בדיוק מה שצריך.
פורסם 2010 בינואר 1115 שנים חיפה-אילת, אולי. אתה יכל לכתוב Clone לכל מחלקה ומחלקה, אבל כאשר ההירכייה שלך גדלה, זה כבר נהייה מעיק.השיטה הזו יוצרת deep copy בצורה ג'אנרית לכל אובייקט Serializable .
פורסם 2010 בינואר 1215 שנים קח את התור שלך, ותספור את האיברים שבו בדיוק כמו שאתה עושה עכשיו עם qt2.ההבדל הוא שכשאתה מוציא איבר מהתור, במקום לזרוק אותו, תכניס אותו לתור העזר.בסוף הלולאה, התור שלך יהיה ריק, ותור העזר יכיל את כל האיברים באותו הסדר.
פורסם 2010 בינואר 1215 שנים מחבר אה ואז אני פשוט יוכל להפנות את התור המקורי (qt) לתור העזר (qt2) בסוף הפעולה.ונזכרתי בעוד שאלה קטנה- נכון אמרת שלתור אין שום בנאי שמקבל פרמטר אחד. אז אתה יכול להראות לי איפה ראית את המידע הזה שאני אדע להבא (כי למשל בדקתי ועל מכסנית זה כן עובד)
פורסם 2010 בינואר 1215 שנים אה ואז אני פשוט יוכל להפנות את התור המקורי (qt) לתור העזר (qt2) בסוף הפעולה.לא יעבוד, כי זה ישנה רק את הערך של הפרמטר qt1. מי שקרא לפונקציה Size עדיין יישאר עם תור ריק ביד.ונזכרתי בעוד שאלה קטנה- נכון אמרת שלתור אין שום בנאי שמקבל פרמטר אחד. אז אתה יכול להראות לי איפה ראית את המידע הזה שאני אדע להבא (כי למשל בדקתי ועל מכסנית זה כן עובד)קרא את ההודעות הקודמות שלי (בסוף העמוד הראשון).
פורסם 2010 בינואר 1215 שנים מחבר לא יעבוד, כי זה ישנה רק את הערך של הפרמטר qt1. מי שקרא לפונקציה Size עדיין יישאר עם תור ריק ביד.למה זה לא יעבוד? אם בסוף הפונקציה אני עושה qt1=qt2 ?קרא את ההודעות הקודמות שלי (בסוף העמוד הראשון).לא רשמת בהודעה הקודמת בדיוק איפה ראית שאין בנאי.נתת את האתר הזה:http://sites.huji.ac.il/science/unit4_2007/Csharp/Unit4/Unit4Guide.htmאבל איפה זה אמור להיות רשום שם?
פורסם 2010 בינואר 1215 שנים תחשוב על הקוד הזה:void add2(int x) { x += 2;}ואז קריאה לפונקציה, ככה:int y = 10;add2(y);מה יהיה הערך של y?ולגבי התיעוד, מאיפה יש לך את החבילה הזו, Unit4?
פורסם 2010 בינואר 1215 שנים נכון, הערך של y יישאר 10.אז באותו אופן, אם הפונקציה היא כזו:void f(Queue q) { q.remove(); q = new Queue();}ואז עושים דבר כזה:Queue q2 = new Queue();// add some elements to q2f(q2);מה קורה כאן? הפונקציה f מקבלת תור (ליתר דיוק, היא מקבלת מצביע לתור, כי כל הטיפוסים ב-#C, למעט הפרימיטיביים הם מצביעים). היא מוחקת ממנו איבר, ואז משנה את המצביע q כך שיצביע לתור חדש שהיא יוצרת. הקריאה ל-f מעבירה את מצביע לתור q2 לפונקציה, לכן הפונקציה מורידה איבר מהתור הזה, וזהו - q2 נשאר q2, ולא מצביע לתור החדש.לגבי Unit4 - איזה ספר זה? מאיפה החבילה עצמה? (דיסק שמצורף לספר?) אין שם תיעוד של החבילה?
פורסם 2010 בינואר 1215 שנים מחבר אז לפי מה שאתה אומר דרך פעולה אני לא יכול לשנות את המצביע של מה ששלחתי לה?כיאלו אם אני עושה אני מזמן את הפונקציה:f (q1)void f (queue q1)q1=q2אז q1 יצביע לq2 אבל בסיום הפעולה הוא בעצם לא יצביע לq2? ???וה-Unit4 הוא מהספר לימוד "עיצוב תוכנה מבוסס עצמים בשפת סישרפ", את החבילה עצמה הם אמרו להוריד מהאתר שלהם (שכבר מצאת אותו לפני כן).יש שם תיעוד, העלתי תמונה שלו. הם לא אומרים כלום בנוגע לבונה וכל זה...[attachment deleted by admin]
פורסם 2010 בינואר 1215 שנים אז לפי מה שאתה אומר דרך פעולה אני לא יכול לשנות את המצביע של מה ששלחתי לה?בדיוק.שים לב שבדוגמה שאתה רשמת, יש שני מצביעים שנקראים q1. הראשון הוא הפרמטר שאתה מעביר לפונקציה, כשאתה עושה (f(q1. המצביע הזה מועתק למצביע נוסף, שגם נקרא q1, בתוך הפונקציה f. כל שינוי שאתה עושה למצביע q1 שבתוך f ישנה רק את המצביע הזה, ולא את ה-q1 שמחוץ לפונקציה.ולגבי התיעוד, מה לדעתך אומרת הפונקציה הראשונה שכתובה שם?
פורסם 2010 בינואר 1215 שנים מחבר זה לא מסתדר לי כ"כ בראש...אם אני קורא לפונקציה f (qt1)אז לqt1 יש מצביע אחד כבר , וכאשר אני מזמן את הפעולה הזו נוצר עוד מצביע שמצביע לqt1. ולכן כל פעולה שאני מבצע בפונקציה תשפיע על qt1 כי היא מצביעה אליו. זה מה שהבנתי עד עכשיו... אבל לפי מה שאתה אומר זה לא ככה, לא? לפי מה שהבנתי ממך זה שאם אני מבצע כל מיני פעולות על qt1 בפונקציהת בסיום הפונקציה הוא לא ישתנה? :s05: :s05:הפונקציה הראשונה בתיעוד אומרת תורק ריק, נכון, אבל זה רק אם אין בסוגריים כלום, אולי אם אני אתן ערך בסוגריים זה לא יהיה המצב - וזה לא רשום. מה גם שלמשל במחלקה מחסנית שמופיעה באותו פרק זה אותו דבר, ושם עשיתי ככה:Stack<string> st2 = new Stack<string>(s);ואם זיכורני אינו מטעה אותי זה עבד יופי..[attachment deleted by admin]
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.