اذهب إلى المحتوى

السؤال

Recommended Posts

  • 1
نشر

في الإصدار الحديث من ++C من 11 وأحدث تم إضافة Array وأصبح يمكن تمرير وإرجاع المصفوفات مثل أي متغيرات أخرى.. وهي معرفة ضمن المكتبة القياسة std::array ويتم تضمينها من خلال الملف الرأسي:

#include <array>

ثم مثال للاستخدام:

std::array<int, 3> a = {1, 2, 3};   // مصفوفة رقمية
  
std::array<std::string, 2> s = { std::string("a"), "b" };  // مصفوفة محرفية

دالة تعيد مصفوفة std::array

#include <array>
using namespace std;
  

//تعريف دالة من نمط مصفوفة رقمية وبطول 10  
array<int, 10> fill_arr(int arr[])  // دالة تقوم بنفس محتوى مصفوفة لأخرى
{
    array<int, 10> arr2; // تعريف مصفوفة جديدة
  
    for(int i=0; i<10; ++i) {
        arr2[i]=arr[i]*2;  // نسخ القيمع ضربها ب 2
    }
    return arr2;  // إعادة مصفوفة
}

في حال تعاملك مع مصفوفة عادية، عليك تمرير طولها (عدد عناصرها كوسيط ثاني لأي دالة، لأن تمرير المؤشر وحده لايكفي لتحديد من هم عناصر المصفوفة ) ولأن ليس لها رمز نهاية مثل المصفوفة المحرفية '0/'

لطباعة مصفوفة:

for(const auto& x: array)
        
	std::cout << x << ' ';

لترتيب مصفوفة:

// نستخدم مؤشر البداية والنهاية

std::sort(a.begin(), a.end());

يوجد أيضا النمط std::vector يمكن استخدامه كمصفوفة:

std::vector<int> fill_arr( std::vector<int> arr ) {
    // أي شيفرة تعدل المصفوفة الممررة
    return arr;
}

الفروقات:

  • Array لها حجم ثابت (عدد عناصر)
  • Vector مصفوفة ديناميكية أو ثايتة ويمكن إضافة عناصر لها وتغيير حجمها أو الحذف منها أيضا.
  • الواجهة البرمجية ل Verctor هي list interface أي تعامل مثل قائمة أما Array تعامل مثل نمط بيانات primitive data type interface
  • 0
نشر

ﻻ يمكنك إرجاع مصفوفة بشكل مباشر في لغة c++ ولكن بدلاً من ذلك يمكنك إرجاع مؤشر pointer

int* function(){}

يمكنك في تلك الحالة أن تقوم بإرجاع مصفوفة دون مشاكل, حيث أن عﻻمة  الأقواس [] تُترجم خلف الكواليس كمؤشر (pointer) فمثلاً

int func(int arr[]){}

مثلها مثل

int func(int elm*){}

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...