Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

الوصول إلى العناصر

جزء من قسم Logic & Flow في رحلة C++ على Coddy — الدرس 12 من 56.

الآن بعد أن أصبحت قادراً على إنشاء المتجهات (vectors) وإضافة عناصر إليها، تحتاج إلى معرفة كيفية استرداد عناصر محددة من المتجه الخاص بك. توفر لغة C++ طريقتين رئيسيتين للوصول إلى العناصر الفردية: عامل الأقواس المربعة (square bracket operator) ووسيلة .at().

يعمل عامل الأقواس المربعة [] تماماً كما هو الحال مع المصفوفات العادية. يمكنك تحديد فهرس العنصر الذي تريد الوصول إليه:

std::vector<int> numbers = {10, 20, 30, 40};
int first = numbers[0];    // يحصل على 10
int third = numbers[2];    // يحصل على 30

توفر الدالة .at() طريقة بديلة للوصول إلى العناصر مع وجود فرق مهم - فهي تتضمن التحقق من الحدود:

int first = numbers.at(0);    // يحصل على 10
int third = numbers.at(2);    // يحصل على 30

الفرق الجوهري هو الأمان: إذا حاولت الوصول إلى فهرس غير موجود، يمكن أن يؤدي [] إلى سلوك غير متوقع، بينما سيقوم .at() بطرح استثناء لتنبيهك بالخطأ. لأغراض التعلم، كلتا الطريقتين تعملان بشكل جيد، ولكن .at() يوفر حماية إضافية ضد الوصول إلى مواقع غير صالحة في الـ vector الخاص بك.

challenge icon

التحدي

سهل

أنشئ برنامجاً يوضح الوصول إلى عناصر المتجه (vector) من خلال استرجاع عناصر محددة من المتجه باستخدام كل من عامل الأقواس المربعة وطريقة .at().

سيتم توفير المدخلات التالية:

  • عدد صحيح n يمثل عدد العناصر في المتجه
  • ثم n من الأعداد الصحيحة لملء المتجه
  • عدد صحيح index1 يمثل الفهرس الأول للوصول إليه
  • عدد صحيح index2 يمثل الفهرس الثاني للوصول إليه

يجب أن يقوم برنامجك بما يلي:

  1. إنشاء std::vector<int> باسم data
  2. استخدام push_back() لإضافة كل من أرقام المدخلات الـ n إلى المتجه
  3. الوصول إلى العنصر الموجود في index1 باستخدام عامل الأقواس المربعة [] وتخزينه في متغير باسم value1
  4. الوصول إلى العنصر الموجود في index2 باستخدام طريقة .at() وتخزينه في متغير باسم value2
  5. طباعة القيم التي تم الوصول إليها والفهارس المقابلة لها
  6. طباعة العنصرين الأول والأخير من المتجه باستخدام الوصول القائم على الفهرس

استخدم تنسيق المخرجات الدقيق التالي:

Element at index [index1]: [value1]
Element at index [index2]: [value2]
First element: [first value]
Last element: [last value]

للوصول إلى العنصر الأخير، استخدم data.size() - 1 كفهرس مع عامل الأقواس المربعة.

ورقة مرجعية

توفر متجهات C++ (vectors) طريقتين رئيسيتين للوصول إلى العناصر الفردية:

عامل الأقواس المربعة []:

std::vector<int> numbers = {10, 20, 30, 40};
int first = numbers[0];    // يحصل على 10
int third = numbers[2];    // يحصل على 30

طريقة .at():

int first = numbers.at(0);    // يحصل على 10
int third = numbers.at(2);    // يحصل على 30

الفرق الرئيسي هو الأمان: يمكن أن يتسبب [] في سلوك غير متوقع عند الوصول إلى فهارس غير صالحة، بينما يرمي .at() استثناءً (exception) للحماية من خلال التحقق من الحدود.

للوصول إلى العنصر الأخير، استخدم data.size() - 1 كفهرس.

جرّب بنفسك

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

int main() {
    // قراءة المدخلات
    int n;
    cin >> n;
    
    vector<int> data;
    
    // قراءة n من الأعداد الصحيحة وإضافتها إلى المتجه (vector)
    for (int i = 0; i < n; i++) {
        int num;
        cin >> num;
        data.push_back(num);
    }
    
    int index1, index2;
    cin >> index1;
    cin >> index2;
    
    // مهام: اكتب الكود الخاص بك أدناه
    // الوصول إلى العناصر باستخدام عامل التشغيل [] وطريقة .at()
    // تخزين القيم التي تم الوصول إليها في value1 و value2
    
    // طباعة النتائج
    cout << "Element at index " << index1 << ": " << value1 << endl;
    cout << "Element at index " << index2 << ": " << value2 << endl;
    cout << "First element: " << /* الوصول إلى العنصر الأول */ << endl;
    cout << "Last element: " << /* الوصول إلى العنصر الأخير باستخدام data.size() - 1 */ << endl;
    
    return 0;
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Logic & Flow