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 الكامل بالعربي.