كلاس Vector في هذا الدرس سننظر في الحاويات والمكررات containers, iterators ونبدأ بكلاس vector قياسي vector هو إجابة لمشاكل مع مصفوفات C و ++C وهي أن عدد العناصر التي قد تحتاج إلى تخزينها في الحاوية، غير ثابت وقد لا يكون معروفًا مقدمًا لذا لا يمكنك تخصيص العدد الدقيق للعناصر في المصفوفة، ولكن يجب أن تكون العناصر قابلة للوصول بأكثر الطرق كفاءة هنا، أدخل vector القياسي std vector لنلق نظرة على المثال في هذا المثال لدينا ثلاثة vector يتم بناؤها أحدهما افتراضي بدون حجم واحد بحجم ولكن بدون عناصر والثالث باستخدام تهيئة قياسية هذا سوف يبني فئة vector في مكانها بالقيم التي تم تعيينها في القائمة لنقم الآن ببناء المثال وتشغيله دعنا أولاً نلقي نظرة على العنصر إضافة عنصر من vector باستخدام طريقة pushback كما يمكنك أن تتخيل العنصر يضيف عن طريق pushback يتم تخصيصه وإضافته في نهاية vector مما يزيد من حجم vector وإتاحة العنصر وهذا بالضبط ما نراه في إخراج هذا البرنامج في الحالة الثانية، دعنا نعلق عليه واستخدام test vector 2 بناء وتشغيل وباستخدام test vector 2 نرى أن الحجم الأولي ل vector هو 10 وبعد ذلك يمكننا بالفعل ضبط العنصر باستخدام قوس مربع أو عامل الإشارة يمكننا بالفعل ضبط العنصر صفر على القيمة 15 وهذا ما نراه في إخراج السطر الثاني ل test vector 2 آخر شيء سنتحدث عنه هو كيفية الوصول إلى عنصر vector يوجد في الواقع مثالان لكيفية عمل ذلك يستخدم المثال الأول شيئًا مشابهًا ل For Each وهي في الأساس حلقة for التي تتحرك من خلال القيم الموجودة داخل vector ومن ثم إخراج قيمهم في الطريقة الرابعة، سنرى أننا سنستخدم المؤشرات فلنقم الآن ببنائه ونحصل أيضًا على تحذير ينبع التحذير هنا من حقيقة أنني أعلن المتغير i كعدد صحيح، والذي يتم تخصيصه للنوع لكن الحجم لا يحتاج للذهاب في المنطقة السلبية لذا فإن قيمة الحجم ونوع الإرجاع للحجم هو في الواقع نوع الحجم، والذي عادة ما يكون غير موقّع unsigned لكن يمكننا استخدام نفس نوع الحجم بدلاً من int ويمكننا القيام بذلك، على هذا النحو باستخدام نوع الحجم نوع الحجم هو في الواقع نوع معلن داخل قالب vector لتحديد أي نوع يتم استخدامه كنوع حجم داخل هذا vector وعادة ما يكون حجمه __ t size_t لكن دعنا نبني هذا ودعنا نقوم بالتشغيل وكما ترى، الحجم الأولي ل vector هو 10 وهو واحد، اثنان، ثلاثة، أربعة، خمسة، ستة سبعة، ثمانية، تسعة، 10 والقيم هي واحد، اثنان، ثلاثة، أربعة، خمسة، ستة سبعة، ثمانية، تسعة، 10 إما باستخدام قيمة التكرار أو باستخدام الفهرس index هناك طرق وأساليب أخرى للوصول إلى فئات vector واستخدامها ولكن هذه خارج نطاق هذا القسم المحدد على الرغم من أنني يجب أن أشير إلى ذلك لأن vector هو امتداد لوظيفة المصفوفة الذاكرة المخصصة ل vector متجاورة مما يسمح بسرعة كبيرة للوصول إلى البيانات لكنها تأتي مع عيوب عندما يتعلق الأمر للذاكرة المخصصة وغير المخصصة لأن ذاكرة vector يجب أن تكون متجاورة الذاكرة المخصصة أثناء الاستدعاءات مثل pushback أو في عمليات playback يمكن أن تصبح باهظة الثمن إذا كانت الذاكرة المطلوبة للإلحاق غير متوفرة مباشرة في نهاية vector وقد يحتاج vector بأكمله إلى التحول من موقعه الأصلي إلى الموقع الجديد وإذا كان عدد العناصر صغيرًا قد لا يكون له تأثير كبير ولكن إذا كان عدد العناصر كبيرًا ثم الانتقال قد يصبح باهظ الثمن سيحدث شيء مماثل عندما تمسح vector لأن المحتويات يجب أن تكون متجاورة كل العناصر وراء العنصر المحذوف سوف تضطر إلى التحول إلى الأمام، وتكبد نفقات الوقت هناك طرق للتغلب على المشكلة الأولى ولكن لا توجد طريقة للالتفاف حول الثانية بسهولة مع أخذ ذلك في الاعتبار، دعنا نلقي نظرة على Queue