vector

في C++، المصفوفات لها حجم ثابت، أي لا يمكنك تغيير عدد العناصر التي تحتويها بعد إنشائها. قد تكون هذه مشكلة إذا لم تكن تعرف مسبقًا عدد العناصر التي ستحتاجها. لحل هذه المشكلة، توفر C++ الكائن std::vector. يعمل vector مثل المصفوفة، لكنه يمكن أن ينمو أو يتقلص عند إضافة أو إزالة عناصر.

تعريف الـvector

vector هي جزء من مكتبة تُسمى <vector> وتُعرّف كما يلي:

#include <vector>
using namespace std;
vector<type> name;
العنصر الشرح
name هو اسم الـvector.
type هو نوع البيانات المخزن في الـvector. يمكن أن يكون أي نوع C++ صالح (int, double, string, إلخ).

بعد تعريف الـvector، يكون الـvector فارغًا (كمصفوفة بحجم 0). لإعطاء الـvector حجمًا ابتدائيًا، استخدم الصيغة التالية:

#include <vector>
using namespace std;
vector<type> name(size, value);
العنصر الشرح
size عدد العناصر في الـvector.
value القيمة الابتدائية المعطاة لجميع عناصر الـvector.

العمليات على الـvector

يتصرف الـvector بطريقة مشابهة للمصفوفات. ومع ذلك، فإن للـvector وظائف إضافية. لنفترض أننا عرّفنا vector اسمه v.

#include <vector>
using namespace std;
vector<int> v;

بما أن v يمكن أن يتغير حجمه، نستخدم v.size() للحصول على عدد العناصر في طv.

الوظيفتان الرئيسيتان اللتان تجعل الـvector مميزا هما v.push_back(x) وv.pop_back().

  • v.push_back(x) تضيف القيمة x إلى نهاية الـvector.
  • v.pop_back() تزيل آخر عنصر في الـvector.

الجدول التالي يوضح بعض الدوال الشائعة التي يمكن إجراؤها على الـvector:

الدالة الوصف
v.size() تُعيد عدد العناصر الحالي في الـvector.
v.push_back(x) تضيف العنصر x إلى نهاية الـvector.
v.pop_back() تزيل آخر عنصر من الـvector.
v.resize(n) تغيّر عدد عناصر الـvector إلى n. إذا كان n أكبر من الحجم الحالي للـvector، تُضاف عناصر جديدة؛ وإذا كان أصغر، تُزال العناصر الزائدة من النهاية.
v.clear() تزيل جميع العناصر من الـvector.

مثال

لنلق نظرة على برنامج يستخدم الـvector .

#include <iostream>
#include <vector>
using namespace std;

int main() {
    
    vector<int> v(3, 5);         // بحجم 3 وكل عناصره 5 vector يعرف

    v.pop_back();                // v = {5, 5} يزيل آخر عنصر، فيصبح 

    v.push_back(2);              // v = {5, 5, 2} يضيف العنصر 2 إلى النهاية، فيصبح 
    v.push_back(1);              //  v = {5, 5, 2, 1}يضيف العنصر 1 إلى النهاية، فيصبح 

    cout << v.size() << endl;    // v يطبع عدد العناصر في 

    for (int i = 0; i < v.size(); i++) {
        cout << v[i] << ' ';     // i يطبع العنصر عند الموقع 
    }
}
</div>

سيكون ناتج هذا البرنامج:

4
5 5 2 1

يوضح هذا المثال العمليات الأساسية على الـvector — الإضافة والإزالة — وتأثيرها على المحتوى والحجم.