C++ Vectors

در C++، Vector یکی از پرکاربردترین ساختارهای داده‌ای STL است که یک آرایهٔ پویا (Dynamic Array) را پیاده‌سازی می‌کند.
Vector به ما اجازه می‌دهد عناصر را به راحتی اضافه، حذف و دسترسی داشته باشیم و اندازهٔ آن به‌طور خودکار تغییر کند.

🔹 1️⃣ ایجاد Vector

#include <iostream> #include <vector> using namespace std; int main() { vector<int> v1; // خالی vector<int> v2(5); // 5 عنصر صفر vector<int> v3(5, 10); // 5 عنصر با مقدار 10 vector<int> v4 = {1, 2, 3, 4}; // با مقداردهی اولیه for(int x : v4) cout << x << " "; // خروجی: 1 2 3 4 return 0; }

🔹 2️⃣ اضافه کردن و حذف عناصر

vector<int> v; v.push_back(10); // اضافه به انتها v.push_back(20); v.push_back(30); v.pop_back(); // حذف آخرین عنصر (30 حذف می‌شود) for(int x : v) cout << x << " "; // خروجی: 10 20

()push_back و ()pop_back سریع و کارآمد هستند.

🔹 3️⃣ دسترسی به عناصر

vector<int> v = {1, 2, 3, 4, 5}; cout << v[0] << endl; // اندیس صفر: 1 cout << v.at(2) << endl; // اندیس 2: 3 (با بررسی محدوده) cout << v.front() << endl; // عنصر اول cout << v.back() << endl; // عنصر آخر

🔹 4️⃣ اندازه و ظرفیت

vector<int> v = {1, 2, 3}; cout << "Size: " << v.size() << endl; // تعداد عناصر cout << "Capacity: " << v.capacity() << endl; // ظرفیت داخلی
  • ()size → تعداد عناصر واقعی

  • ()capacity → تعداد عناصری که Vector بدون تغییر اندازه می‌تواند نگه دارد

  • v.resize(n) → تغییر اندازه (اضافه/حذف)

  • ()v.clear → حذف همه عناصر

🔹 5️⃣ حلقه و الگوریتم‌ها

#include <algorithm> vector<int> v = {5, 2, 9, 1, 7}; // مرتب‌سازی sort(v.begin(), v.end()); // معکوس reverse(v.begin(), v.end()); // چاپ for(int x : v) cout << x << " "; // خروجی: 9 7 5 2 1

()v.begin و v.end() Iterator هستند که برای الگوریتم‌های STL استفاده می‌شوند.

🔹 6️⃣ درج و حذف در وسط Vector

vector<int> v = {1, 2, 4, 5}; // درج عدد 3 در موقعیت سوم (اندیس 2) v.insert(v.begin() + 2, 3); // حذف عنصر دوم (اندیس 1) v.erase(v.begin() + 1); for(int x : v) cout << x << " "; // خروجی: 1 3 4 5

🔹 7️⃣ نکات کلیدی

  • Vector یک آرایهٔ پویا است، بنابراین دسترسی با اندیس سریع است (O(1)).

  • اضافه کردن در انتها سریع است (push_back) اما درج/حذف وسط یا ابتدا کند است (O(n)).

  • برای حلقه‌ها و الگوریتم‌ها از Iterator استفاده کنید.

  • اگر اندازهٔ Vector مشخص نیست و نیاز به تغییر دارد، Vector بهترین انتخاب است.

💡 خلاصه:
Vector در ++C ترکیبی از سهولت استفاده آرایه‌ها و انعطاف آرایه‌های پویا است و پایهٔ اکثر برنامه‌های STL محور محسوب می‌شود. با push_back, pop_back, insert, erase, و الگوریتم‌های STL می‌توان آن را به راحتی مدیریت کرد.