تخطَّ إلى المحتوى

std::array

المصفوفة الثابتة الحجم std::array

std::array غلاف حديث وآمن حول مصفوفة C التقليدية ثابتة الحجم، بحجم يُحدَّد وقت الترجمة ولا يتغيّر أبدًا بعدها.

بعكس vector، حجم std::array ثابت تمامًا ومعروف وقت الترجمة (كمعامل قالب ثانٍ) ولا يمكن أن يكبر أو يصغر — لكنه أخف بكثير لأنه يُخزَّن كاملًا على المكدّس (stack) بلا أي تخصيص ديناميكي على الكومة إطلاقًا. يوفّر واجهة STL كاملة (begin/end، size، at) بعكس مصفوفة C الخام العادية، فيعمل مباشرة مع خوارزميات STL كـ std::sort.

الصياغة

std::array<Type, Size> name = {values};

📄 مثال

#include <array>

std::array<int, 5> nums = {5, 3, 1, 4, 2};
std::sort(nums.begin(), nums.end());

for (int n : nums) std::cout << n << " "; // 1 2 3 4 5
std::cout << nums.size(); // 5 — ثابت دائمًا

أهم النقاط

العنصرالوظيفة
الحجم كمعامل قالبstd::array<int, 10> — الحجم 10 جزء من النوع نفسه، ثابت لا يتغيّر
على المكدّس (stack)لا تخصيص ديناميكي على الكومة، أسرع بكثير من vector للأحجام الصغيرة المعروفة سلفًا
واجهة STL كاملةbegin()، end()، size()، at() — تعمل مباشرة مع كل خوارزميات <algorithm>

💡 نصائح عملية

  • استخدمها بدل مصفوفة C الخام T arr[n] كلما كان الحجم ثابتًا ومعروفًا وقت الترجمة — أمان أكبر بلا أي تكلفة أداء إضافية
  • لا تستخدمها إن كان الحجم سيتغيّر وقت التشغيل — هذه بالضبط مهمة std::vector

⚠️ أخطاء شائعة

  • محاولة تغيير حجم std::array وقت التشغيل — الحجم جزء من النوع نفسه ولا يمكن تغييره إطلاقًا
  • استخدام حجم كبير جدًا بـ std::array فيفيض المكدّس (stack overflow) — للأحجام الكبيرة استخدم vector على الكومة

خصائص ذات صلة

🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار CPP الكامل بالعربي.