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

السؤال

Recommended Posts

  • 0
نشر

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

int* function(){}

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

int func(int arr[]){}

مثلها مثل

int func(int elm*){}

 

  • 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

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...