לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #1  
ישן 09-08-2009, 16:31
צלמית המשתמש של בן אור
  בן אור בן אור אינו מחובר  
 
חבר מתאריך: 24.02.05
הודעות: 17,595
שלח הודעה דרך ICQ אל בן אור שלח הודעה דרך MSN אל בן אור Facebook profile Follow me...
ווקטור או מערך בjava, מה החסרון של ווקרטור?

אני צריך לעבוד עם מערך בלי לדעת את הגודל הסופי שלו, השאלה היא מה יהיה יותר יעיל לעבוד עם ווקטור ולהוסיף לו מידע או להשתמש במערך וכל פעם לדרוס את הקיים עם מערך חדש פלוס הערך החדש.

אני חושש לבסס את האפליקציה שלי על ווקטור בלי לדעת האם הוא יפגע בי בהמשך.

חשוב לציין שהאפליקציה חייבת להיות יעילה מכיוון שהיא תרוץ על מכונה חלשה, אז היעילות הרבה יותר חשובה מעד כמה שהקוד יהיה ברור או נוח לתחזוקה.

עד כמה שאני רואה ווקטור יכול לקבל כל אוביקט, האם יש לו תחליף "זול" יותר שיכול לקבל רק סוג ערך אחד? float במקרה הספציפי שלי

המידע שלי על ווקטורים לקוח מ
http://java.sun.com/j2se/1.3/docs/a...til/Vector.html

תודה לעוזרים
_____________________________________
חתימתכם הוסרה כיוון שלא עמדה בחוקי האתר. לפרטים נוספים לחצו כאן. תוכלו לקבל עזרה להתאמת החתימה לחוקים בפורום חתימות וצלמיות.

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #4  
ישן 09-08-2009, 22:00
  Dragonion Dragonion אינו מחובר  
 
חבר מתאריך: 22.08.08
הודעות: 310
בתגובה להודעה מספר 3 שנכתבה על ידי רמי ד שמתחילה ב "שים לב שכאשר אתה מוסיף..."

ציטוט:
במקור נכתב על ידי רמי ד
שים לב שכאשר אתה מוסיף לווקטור תא, הוא למעשה מועתק ונוצר מחדש.
זה לא יעיל.
לגודל דינאמי של מערך, אני מציע לך לחשוב על משהוא כמו עץ...


לא מדויק. הווקטור מראש מקצה יותר זיכרון מאשר שצריך (בC++ זה כפול שתיים עם אני זוכר נכון), ורק כשמגיעים לגבול הוא מקצה עוד פעם משהו יותר גדול.
אפשרות אחרת היא linked list, אבל מה שחשוב פה הוא השימוש שאתה רוצה לעשות עם המערך.

לפנות לאובייקט מסוים במערך, יותר מהיר בווקטור, מכיוון שזו פנייה ישירה במערך, לעומת linked list שבה זו סטטיסטקיה של N/2.
לעומת זאת, עם אתה צריך בכל מקרה לעבור על כל המערך בכל פעם שאתה משתמש בו, לך על linked list.
עם אתה צריך את שניהם, אני מציע לך לנסות ולראות מה יפעל יותר טוב.

אני מניח שlinked list מוגדר כ List בJava.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #5  
ישן 10-08-2009, 00:18
  צ'יקו 13 צ'יקו 13 אינו מחובר  
 
חבר מתאריך: 09.08.09
הודעות: 2
גם הוא טועה וגם אתה טועה
בתגובה להודעה מספר 4 שנכתבה על ידי Dragonion שמתחילה ב "[QUOTE=רמי ד]שים לב שכאשר אתה..."

הוא טועה כי בג'אווה זה תלוי בכמה דברים, לדוגמה בפרמטר capacityIncrement ב-constructor של Vector.

אתה טועה כי ב-CPP התקן לא אומר שום דבר כזה. המימוש של MS מכפיל ב-2 ואולי עוד מימושים עושים את זה, אבל התקן לא מחייב את זה בכלל. הוא אומר דברים כמו:
23.2.4 Template class vector
A vector is a kind of sequence that supports random access iterators. In addition it supports (amortized) constant time insert and erase operation at the end; insert and erase in the middle take linear time. Storage management is handled automatically, though hints can be given to improve efficiency.

23.2.4.3 vector modifiers
iterator insert (iterator position , const T& x);
void insert (iterator position, size_type n, const T& x);
template <class InputIterator> void insert (iterator position, InputIterator first, InputIterator last);

...
Complexity: If first and last are forward iterators, bidirectional iterators, or random access iterators, the complexity is linear in the number of elements in the range [first, last) plus the distance to the end of the vector. If they are input iterators, the complexity is proportional to the number of element in the range [first, last) times the distance to the end of the vector.
ועוד ועוד. הסיכום הוא שיש דרישות על סיבוכיות, אבל לא על הקבועים.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #8  
ישן 10-08-2009, 09:09
  צ'יקו 13 צ'יקו 13 אינו מחובר  
 
חבר מתאריך: 09.08.09
הודעות: 2
זה לא templates
בתגובה להודעה מספר 7 שנכתבה על ידי rlsf שמתחילה ב "ועוד נקודה קטנה לסיום: JAVA 5..."

templates זה המנגנון ב-CPP שממש משכפל קוד ב-compile-time עבור כל טיפוס שעושים עבורו instantiation. ב-JAVA יש מנגנון generics שמגן עליך ב-compile-time מהעברת טיפוסים לא נכונים וחוסך cast-ים, אבל היכולת היא ממש להשתמש באותו קוד עבור טיפוסים שונים וזה משהו שמתרחש ב-run-time.

גם התיעוד של SUN מבדיל בין המונחים:
Java Generics vs. C++ Templates

While generics look like the C++ templates, it is important to note that they are not the same. Generics simply provide compile-time type safety and eliminate the need for casts. The main difference is encapsulation: errors are flagged where they occur and not later at some use site, and source code is not exposed to clients. Generics use a technique known as type erasure as described above, and the compiler keeps track of the generics internally, and all instances use the same class file at compile/run time.

A C++ template on the other hand is just a fancy macro processor; whenever a template class is instantiated with a new class, the entire code for the class is reproduced and recompiled for the new class.

עוד הבדל הוא שבעוד שב-CPP בתוך ה-template יש לך את כל המידע על טיפוס (וזוהי דרישה בעצם - אי-אפשר לבצע instantiation ל-incomplete type) בג'אווה קורה בדיוק ההפך: מבצעים את מה שנקרא במונחי ג'אווה type erasure ומעלימים את כל המידע על הטיפוס ה"טמפלייטי".


בג'אווה יש גם מושג של templates אבל הוא מדבר על משהו אחר לגמרי:
http://java.sun.com/javase/6/docs/a.../Templates.html
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 17:44

הדף נוצר ב 0.09 שניות עם 12 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר