0Pricing
C++ Academy · درس

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

بديل آمن لمصفوفات C

std::array ثابتة الحجم درس مجاني في C++ Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في C++ Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة C++ Academy 4 دروس في المجموع.

مصفوفة C آمنة

إن std::array<T, N> مصفوفة ثابتة الحجم تعرف حجمها الخاص وتتصرف كحاوية سليمة. أدرجوا <array>.

#include <iostream>
#include <array>
int main() {
    std::array<int, 3> a = {1, 2, 3};
    std::cout << a[0] << " " << a.size() << "\n";
}

تعرف حجمها

بخلاف المصفوفة الخام التي تتحول إلى مؤشر، تُبلغك std::array دائمًا بطولها عبر size().

#include <iostream>
#include <array>
int main() {
    std::array<double, 4> a{};
    std::cout << a.size() << "\n"; // 4
}

حلقة for المعتمدة على النطاق

لأنها حاوية فعلية، يمكنك التكرار باستخدام حلقة for المعتمدة على النطاق.

#include <iostream>
#include <array>
int main() {
    std::array<int, 3> a = {10, 20, 30};
    for (int x : a) std::cout << x << " ";
    std::cout << "\n";
}

التحقق من الحدود باستخدام at()

ترمي at(i) الاستثناء std::out_of_range عند استخدام فهرس غير صالح، بينما لا تتحقق operator[] من الحدود؛ فاختارا وفقًا لمتطلبات الأمان.

#include <iostream>
#include <array>
int main() {
    std::array<int, 2> a = {1, 2};
    try { a.at(5); }
    catch (const std::out_of_range&) { std::cout << "out of range\n"; }
}

front وback وdata

دوال وصول مريحة: تُعيد front() وback() العنصرين الأول والأخير، بينما توفر data() مؤشرًا خامًا لواجهات C البرمجية.

#include <iostream>
#include <array>
int main() {
    std::array<int, 3> a = {7, 8, 9};
    std::cout << a.front() << " " << a.back() << "\n";
}

قابلة للنسخ بالقيمة

تُنسخ std::array بسهولة باستخدام =، إذ تنسخ كل عنصر، بخلاف المصفوفات الخام التي تتحول إلى مؤشرات.

#include <iostream>
#include <array>
int main() {
    std::array<int, 3> a = {1, 2, 3};
    std::array<int, 3> b = a; // full copy
    b[0] = 99;
    std::cout << a[0] << " " << b[0] << "\n"; // 1 99
}

تعمل مع الخوارزميات

تقبل الخوارزميات القياسية مكررات std::array؛ وفي المثال، نفرزها.

#include <iostream>
#include <array>
#include <algorithm>
int main() {
    std::array<int, 4> a = {4, 1, 3, 2};
    std::sort(a.begin(), a.end());
    for (int x : a) std::cout << x << " ";
    std::cout << "\n";
}

التعبئة والمقارنة

تضبط fill(value) قيمة كل عنصر؛ كما تدعم std::array المقارنة == عنصرًا بعنصر.

#include <iostream>
#include <array>
int main() {
    std::array<int, 3> a{};
    a.fill(5);
    std::array<int, 3> b = {5, 5, 5};
    std::cout << (a == b) << "\n"; // 1
}

الحجم جزء من النوع

يكون الطول N مضمّنًا في النوع، لذلك لن تقبل دالة تتلقى std::array<int,3> مصفوفةً بحجم 4. وهنا تساعدك std::span لاحقًا.

التخصيص على المكدس

تخزن std::array عناصرها ضمن الكائن نفسه، وعادةً على المكدس، من دون تخصيص على الكومة؛ مما يجعلها سريعة ويمكن التنبؤ بأدائها مع البيانات ذات الحجم الثابت.

المصفوفة مقابل المتجه

استخدم std::array عندما يكون الحجم معلومًا وقت الترجمة وثابتًا. واستخدم std::vector عندما يمكن أن يتغير الحجم أثناء التشغيل.

اختبار سريع

تحقق من مدى فهمك لـ std::array.

مراجعة

لقد تعلمت ما يلي عن std::array:

  • حاوية ذات حجم ثابت وتعرف حجمها، ولا تتطلب تخصيصًا على الكومة.
  • تتحقق at() من الحدود، بينما لا تتحقق [] منها.
  • قابلة للنسخ والمقارنة، وتعمل مع الخوارزميات.
  • الحجم N جزء من النوع.

الأسئلة الشائعة

هل درس «std::array ثابتة الحجم» مجاني؟

نعم — نص درس «std::array ثابتة الحجم» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة C++ Academy، انتقل إلى CoddyKit PRO. تتضمن دورة C++ Academy 4 دروس في المجموع.

ماذا ستتعلم في «std::array ثابتة الحجم»؟

بديل آمن لمصفوفات C تتمرن على C++ Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ C++ Academy؟

لا تُشترط خبرة سابقة. C++ Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «std::array ثابتة الحجم»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس C++ Academy هذا؟

نعم. كل درس في C++ Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. std::array ثابتة الحجم
  2. أساسيات std::span
  3. تمرير Spans إلى الدوال
  4. الحدود وSubspans
← العودة إلى C++ Academy