logo

אתחול וקטור ב-C++

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

עם האב 'מחלקה אוסף', וקטור נשלח בצורה של מחלקה תבנית. המערך הוא מבנה הנתונים ברמה נמוכה יותר עם המאפיינים הספציפיים שלהם. לוקטורים יש פונקציות & בנאים; הם אינם מבוססי אינדקס. הם ההיפך מ-Arrays, שהם מבני נתונים מבוססי אינדקס. כאן, הכתובת הנמוכה ביותר מסופקת לאלמנט הראשון, והכתובת הגבוהה ביותר מסופקת לאלמנט האחרון. וקטור משמש להכנסה ומחיקה של אובייקט, בעוד שמערכים משמשים לגישה תכופה של אובייקטים. מערכים הם מבני נתונים חוסכי זיכרון, בעוד ש-Vector מנצל הרבה יותר זיכרון תמורת ניהול אחסון וצמיחה דינמית. ל-Vector לוקח יותר זמן לגשת לאלמנטים, אבל זה לא המקרה עם Arrays.

ישנן ארבע דרכים לאתחל את a וקטור ב-C++ :

  • על ידי הזנת הערכים אחד אחד
  • על ידי שימוש בבנאי עמוס יתר על המידה של המחלקה הווקטורית
  • בעזרת מערכים
  • על ידי שימוש בוקטור מאותחל אחר

על ידי הזנת הערכים אחד אחד -

ניתן להכניס את כל האלמנטים בוקטור אחד אחד באמצעות שיטת ה-Vector class 'push_back'.

אַלגוֹרִיתְם

 Begin Declare v of vector type. Then we call push_back() function. This is done to insert values into vector v. Then we print 'Vector elements: 
'. ' for (int a: v) print all the elements of variable a.' 

קוד -

 #include #include using namespace std; int main() { vector vec; vec.push_back(1); vec.push_back(2); vec.push_back(3); vec.push_back(4); vec.push_back(5); vec.push_back(6); vec.push_back(7); vec.push_back(8); vec.push_back(9); vec.push_back(101); for (int i = 0; i <vec.size(); i++) { cout << vec[i] ' '; } return 0; < pre> <p> <strong>Output</strong> </p> <img src="//techcodeview.com/img/c-tutorial/62/initialize-vector-c.webp" alt="Initialize Vector in C++"> <h3>Using an overloaded constructor -</h3> <p>When a vector has multiple elements with the same values, then we use this method.</p> <p>By using an overloaded constructor of the vector class -</p> <p>This method is mainly used when a vector is filled with multiple elements with the same value.</p> <p> <strong>Algorithm</strong> </p> <pre> Begin First, we initialize a variable say &apos;s&apos;. Then we have to create a vector say &apos;v&apos; with size&apos;s&apos;. Then we initialize vector v1. Then initialize v2 by v1. Then we print the elements. End. </pre> <p> <strong>Code -</strong> </p> <pre> #include #include using namespace std; int main() { int elements = 12; vector vec(elements, 8); for (int i = 0; i <vec.size(); i++) { cout << vec[i] ' 
'; } return 0; < pre> <p> <strong>Output</strong> </p> <pre> 8 8 8 8 8 8 8 8 8 8 8 8 </pre> <h3>By the help of arrays -</h3> <p>We pass an array to the constructor of the vector class. The Array contains the elements which will fill the vector.</p> <p> <strong>Algorithm -</strong> </p> <pre> Begin First, we create a vector say v. Then, we initialize the vector. In the end, print the elements. End. </pre> <p> <strong>Code -</strong> </p> <pre> #include #include using namespace std; int main() { vector vectr{9,8,7,6,5,4,3,2,1,0}; for (int i = 0; i <vectr.size(); i++) { cout << vectr[i] ' 
'; } return 0; < pre> <p> <strong>Output</strong> </p> <pre> 9 8 7 6 5 4 3 2 1 0 </pre> <h3>Using another initialized vector -</h3> <p>Here, we have to pass the begin() and end() iterators of an initialized vector to a vector class constructor. Then we initialize a new vector and fill it with the old vector.</p> <p> <strong>Algorithm -</strong> </p> <pre> Begin First, we have to create a vector v1. Then, we have to initialize vector v1 by an array. Then we initialize vector v2 by v1. We have to print the elements. End. </pre> <p> <strong>Code -</strong> </p> <pre> #include #include using namespace std; int main() { vector vec_1{1,2,3,4,5,6,7,8}; vector vec_2(vec_1.begin(), vec_1.end()); for (int i = 0; i <vec_2.size(); i++) { cout << vec_2[i] ' 
'; } return 0; < pre> <p> <strong>Output</strong> </p> <pre> 1 2 3 4 5 6 7 8 </pre> <hr></vec_2.size();></pre></vectr.size();></pre></vec.size();></pre></vec.size();>

קוד -

 #include #include using namespace std; int main() { int elements = 12; vector vec(elements, 8); for (int i = 0; i <vec.size(); i++) { cout << vec[i] \' 
\'; } return 0; < pre> <p> <strong>Output</strong> </p> <pre> 8 8 8 8 8 8 8 8 8 8 8 8 </pre> <h3>By the help of arrays -</h3> <p>We pass an array to the constructor of the vector class. The Array contains the elements which will fill the vector.</p> <p> <strong>Algorithm -</strong> </p> <pre> Begin First, we create a vector say v. Then, we initialize the vector. In the end, print the elements. End. </pre> <p> <strong>Code -</strong> </p> <pre> #include #include using namespace std; int main() { vector vectr{9,8,7,6,5,4,3,2,1,0}; for (int i = 0; i <vectr.size(); i++) { cout << vectr[i] \' 
\'; } return 0; < pre> <p> <strong>Output</strong> </p> <pre> 9 8 7 6 5 4 3 2 1 0 </pre> <h3>Using another initialized vector -</h3> <p>Here, we have to pass the begin() and end() iterators of an initialized vector to a vector class constructor. Then we initialize a new vector and fill it with the old vector.</p> <p> <strong>Algorithm -</strong> </p> <pre> Begin First, we have to create a vector v1. Then, we have to initialize vector v1 by an array. Then we initialize vector v2 by v1. We have to print the elements. End. </pre> <p> <strong>Code -</strong> </p> <pre> #include #include using namespace std; int main() { vector vec_1{1,2,3,4,5,6,7,8}; vector vec_2(vec_1.begin(), vec_1.end()); for (int i = 0; i <vec_2.size(); i++) { cout << vec_2[i] \' 
\'; } return 0; < pre> <p> <strong>Output</strong> </p> <pre> 1 2 3 4 5 6 7 8 </pre> <hr></vec_2.size();></pre></vectr.size();></pre></vec.size();>

בעזרת מערכים -

אנו מעבירים מערך לבנאי המחלקה הווקטורית. המערך מכיל את האלמנטים שימלאו את הווקטור.

אלגוריתם -

 Begin First, we create a vector say v. Then, we initialize the vector. In the end, print the elements. End. 

קוד -

 #include #include using namespace std; int main() { vector vectr{9,8,7,6,5,4,3,2,1,0}; for (int i = 0; i <vectr.size(); i++) { cout << vectr[i] \' 
\'; } return 0; < pre> <p> <strong>Output</strong> </p> <pre> 9 8 7 6 5 4 3 2 1 0 </pre> <h3>Using another initialized vector -</h3> <p>Here, we have to pass the begin() and end() iterators of an initialized vector to a vector class constructor. Then we initialize a new vector and fill it with the old vector.</p> <p> <strong>Algorithm -</strong> </p> <pre> Begin First, we have to create a vector v1. Then, we have to initialize vector v1 by an array. Then we initialize vector v2 by v1. We have to print the elements. End. </pre> <p> <strong>Code -</strong> </p> <pre> #include #include using namespace std; int main() { vector vec_1{1,2,3,4,5,6,7,8}; vector vec_2(vec_1.begin(), vec_1.end()); for (int i = 0; i <vec_2.size(); i++) { cout << vec_2[i] \' 
\'; } return 0; < pre> <p> <strong>Output</strong> </p> <pre> 1 2 3 4 5 6 7 8 </pre> <hr></vec_2.size();></pre></vectr.size();>

שימוש בוקטור מאותחל אחר -

כאן, עלינו להעביר את האיטרטורים begin() ו-end() של וקטור מאותחל לבנאי מחלקות וקטור. לאחר מכן אנו מאתחלים וקטור חדש וממלאים אותו בוקטור הישן.

אלגוריתם -

 Begin First, we have to create a vector v1. Then, we have to initialize vector v1 by an array. Then we initialize vector v2 by v1. We have to print the elements. End. 

קוד -

 #include #include using namespace std; int main() { vector vec_1{1,2,3,4,5,6,7,8}; vector vec_2(vec_1.begin(), vec_1.end()); for (int i = 0; i <vec_2.size(); i++) { cout << vec_2[i] \\' 
\\'; } return 0; < pre> <p> <strong>Output</strong> </p> <pre> 1 2 3 4 5 6 7 8 </pre> <hr></vec_2.size();>