logo

تهيئة المتجهات في C++

يمكن للمتجه تخزين قيم بيانات متعددة مثل المصفوفات، لكن يمكنه فقط تخزين مراجع الكائنات وليس أنواع البيانات البدائية. يقومون بتخزين مرجع الكائن يعني أنهم يشيرون إلى الكائنات التي تحتوي على البيانات، بدلاً من تخزينها. على عكس المصفوفة، لا يلزم تهيئة المتجهات بالحجم. لديهم المرونة في الضبط وفقًا لعدد مراجع الكائنات، وهو أمر ممكن لأن تخزينهم يتم التعامل معه تلقائيًا بواسطة الحاوية. ستحتفظ الحاوية بنسخة داخلية من التخصيص، والتي تُستخدم لتخصيص مساحة التخزين مدى الحياة. يمكن تحديد موقع المتجهات وعبورها باستخدام التكرارات، بحيث يتم وضعها في مخزن متجاور. يحتوي Vector أيضًا على ميزات أمان، والتي تحفظ البرامج من التعطل، على عكس Array. يمكننا إعطاء مساحة احتياطية للمتجهات، ولكن ليس للمصفوفات. المصفوفة ليست فئة، ولكن المتجه هو فئة. في المتجهات، يمكن حذف العناصر، ولكن ليس في المصفوفات.

مع 'فئة التجميع' الأصلية، يتم إرسال المتجه في شكل فئة قالب. المصفوفة هي بنية البيانات ذات المستوى الأدنى بخصائصها المحددة. المتجهات لها وظائف ومنشئات؛ فهي لا تعتمد على الفهرس. وهي عكس المصفوفات، وهي هياكل بيانات قائمة على الفهرس. هنا، يتم تقديم أدنى عنوان للعنصر الأول، ويتم تقديم أعلى عنوان للعنصر الأخير. يتم استخدام المتجه لإدراج كائن وحذفه، بينما يتم استخدام المصفوفات للوصول المتكرر للكائنات. المصفوفات هي هياكل بيانات موفرة للذاكرة، بينما يستخدم Vector ذاكرة أكبر بكثير في مقابل إدارة التخزين والنمو ديناميكيًا. يستغرق Vector وقتًا أطول للوصول إلى العناصر، لكن هذا ليس هو الحال مع المصفوفات.

هناك أربع طرق لتهيئة أ ناقلات في C++ :

  • عن طريق إدخال القيم واحدة تلو الأخرى
  • باستخدام مُنشئ مثقل لفئة المتجهات
  • بمساعدة المصفوفات
  • باستخدام ناقل آخر تمت تهيئته

عن طريق إدخال القيم واحدة تلو الأخرى -

يمكن إدراج جميع العناصر الموجودة في المتجه واحدًا تلو الآخر باستخدام طريقة فئة المتجه '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();>