ABA


"שאלה של מתחילים בתכנות c++"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #10999 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 10999
matan13
חבר מתאריך 14.7.08
19469 הודעות, דרג אמינות חבר זה
   22:30   06.11.12   
אל הפורום  
  שאלה של מתחילים בתכנות c++  
 
   איך מבצעים הכנסה לvector של vectorים?

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

תודה מראש.


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  הםםם ldan192  06.11.12 22:59 1
     תודה על התגובה, אבל עדיין matan13 07.11.12 13:23 2
         הסתדרתי תודה בכל מקרה.. matan13 07.11.12 19:47 3
     תגיד עידן למה משתמשים בטיפוס מסוג ווקטור בדרך כלל? יוחאי 12.11.12 13:29 4

       
ldan192 
חבר מתאריך 14.9.08
95119 הודעות
   22:59   06.11.12   
אל הפורום  
  1. הםםם  
בתגובה להודעה מספר 0
 
ערכתי לאחרונה בתאריך 06.11.12 בשעה 23:03 בברכה, ldan192
 

vector <vector <type> > my_vector;
או
vector <vector <type>* > my_vector;

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

בנוגע לשאלה השניה שפספסתי - ממש לא.
יש לך 2 אופציות:


my_vector.push_back(obj);

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


my_vector.resize(my_vector.size()*2);

פה אתה עושה את ה-resize בעצמך, אבל צריך לשים לב מתי לעשות ואז אין בעיה לגשת לאינדקס בעצמך.

כמובן שאפשר גם לקבע גודל לווקטור תוך שימוש ב-;(my_vector.capcity(final_size


בברכה,
עידן


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
matan13
חבר מתאריך 14.7.08
19469 הודעות, דרג אמינות חבר זה
   13:23   07.11.12   
אל הפורום  
  2. תודה על התגובה, אבל עדיין  
בתגובה להודעה מספר 1
 
   לא הבנתי איך אני מכניס לתוך וקטור דו ממדי, ניסיתי לעשות זאת בעזרת:
my_vector.at(i).push_back(obj) 1

כשi רץ על "שורות" הוקטור(שכל אחת מהן היא וקטור).

אולי אם אסביר מה אני מנסה לעשות:
אני קורא מידע מקובץ, המידע הוא n משפטים בכל משפט יש m מילים מופרדות רק ב ','
כל משפט בשורה משלו.
כל משפט אני רוצה להכניס לתוך וקטור, ואת כל המשפטים לתוך וקטור אחד, זאת אומרת שאם יש לי קובץ עם הנתונים הבאים:
1,1,1
2,2,2
3,3,3

יהיה לי וקטור דו ממדי שיכיל בכל שורה שלו משפט אחד מהקובץ(כל מילה בתא בוקטור).

האם ההכנסה שלי נכונה? אם כן, מדוע אני מקבל שגיאה std::out_of_range על הוקטור?(דגש: אין תנאי עצירה על i, ההכנסה אמורה להיפסק כששורה נגמרת, והאיטרציה על i נגמרת כשאין יותר מה לקרוא מהקובץ).

תודה.

תודה מראש.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
matan13
חבר מתאריך 14.7.08
19469 הודעות, דרג אמינות חבר זה
   19:47   07.11.12   
אל הפורום  
  3. הסתדרתי תודה בכל מקרה..  
בתגובה להודעה מספר 2
 
   למטרות חיפוש עתידיות, יצרתי וקטור חד ממדי והכנסתי אליו כל שורה, ואת הוקטור הכנסתי לוקטור של וקטורים. הכל בעזר push_back. בלי אינדקסים..


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
יוחאי
חבר מתאריך 30.12.15
163 הודעות, דרג אמינות חבר זה
   13:29   12.11.12   
אל הפורום  
  4. תגיד עידן למה משתמשים בטיפוס מסוג ווקטור בדרך כלל?  
בתגובה להודעה מספר 1
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net