يعد `vector` C ++ واحدًا من أكثر الحاويات استخدامًا في C ++. الحاوية عبارة عن بنية بيانات تخزن مجموعة من الكائنات التي يمكن أن تختلف عن الترتيب (مثل `vector` !) إلى غير مرتبة (مثل `set` ). تحتوي كل حاويات C ++ على مجموعة مختلفة من الوظائف التي تسمح لك بالوصول إلى كائن (كائنات) في تلك المجموعة ، وتعديلها وتكرارها فوق العناصر الموجودة في بنية البيانات تلك.
تتشابه المؤشرات مع ArrayLists في Java حيث لا يلزم تحديد طول الحاوية. مقارنةً بالمصفوفة التي يتعين عليك فيها تحديد حجمها ، يعتمد حجمها على محتوياتها.
`std::vector` هو جزء من مكتبة C ++ القياسية (ومن ثم `std::` ويسمح لك بتخزين البيانات المتجاورة من نفس نوع البيانات. ملاحظة: **يجب أن تكون جميع الكائنات داخل المتجه من نفس نوع البيانات**
يدخل نوع البيانات الذي تقوم بتخزينه ضمن المتجه ضمن أقواس زاوية بجوار الكلمة الأساسية للمتجه. على سبيل المثال ، إذا كنت ترغب في تخزين مجموعة من السلاسل ، فسيكون المتجه `std::vector<std::string> vector_name`
_ملاحظة_ : يجب عليك تضمين مكتبة المتجه عند استخدام المتجهات!
`#include <vector>`
### ناقلات البناء
هناك العديد من الطرق convinent لبناء ناقلات.
استخدام قائمة intializer - حيث يتم إدراج الكائنات داخل مجموعة من الأقواس: `{ }`
يمكن اعتبار المتكررات كمؤشرات تستخدم على وجه التحديد للتنقل في الحاويات (مثل المتجهات). تبدأ أهم التكرارات `begin()``end()` . `begin()` بإرجاع مؤشر إلى العنصر الأول في متجه بينما تشير نقاط `end()` إلى موضع واحد بعد العنصر الأخير في متجه. على هذا النحو من خلال حلقات ناقلات يمكن أن يتم على النحو التالي:
التكرار فوق العناصر الموجودة في المتحد C ++ `std::vector` يختلف اختلافًا كبيرًا عن التكرار فوق العناصر في متجه في JavaScript أو Ruby. نظرًا لأن C ++ عبارة عن تجريد رقيق لـ C ، فيمكنك فقط التكرار فوق العناصر باستخدام هذه المتغيرات الصغيرة الرائعة التي تسمى المتكررات للوصول إلى كل عنصر. غالبًا ما تأتي المتكررات في شكل مؤشرات هي متغيرات تقوم بتخزين عنوان الذاكرة لمتغير آخر. يمكنك معرفة المزيد حول المؤشرات [هنا](https://www.tutorialspoint.com/cplusplus/cpp_pointers.htm) . ومع ذلك ، لأن التكرارات تعمل كمؤشرات (أو العكس) ، من أجل معرفة ما يشيرون إليه ، تحتاج إلى إدخاله في متغير من نوع appropirate. كيف نفعل ذلك؟ هنا. نحن. اذهب!
هناك طرق مختلفة للتكرار من خلال المتجه والوصول إلى محتوياته. النماذج التالية مكافئة ، أولها ينطوي على استخدام تعبير قائم على أساس (منذ C ++ 11) ، والثاني يستخدم التكرارات ، والآخر هو التكرار المستند إلى الفهرسة
\`\` \`cpp
# تتضمن
# تتضمن
// أعلن أول المتجه الأمراض المنقولة جنسيا :: ناقلات myVector {1، 2، 3، 4، 5}؛ // a عبارة عن متجه 5 أحصمة: 1 و 2 و 3 و 4 و 5
// استخدام حلقة تستند إلى مجموعة (منذ C ++ 11) لـ (int element: myVector) {/ / / / تقرأ مثل "لكل عنصر في myVector" std :: cout << "العنصر هو" <<element<<std::endl؛}
// باستخدام مبرمج الأمراض المنقولة جنسيا :: ناقلات :: يكررها ؛ // تعلن عن المكرر لـ (it = myVector.begin ()؛ it! = myVector.end ()؛ ++ it) { std :: cout << "العنصر هو" << \* it<<std::endl؛//Dereferencetheiteratortoaccessdata}