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

السؤال

Recommended Posts

  • 1
نشر

لأن دالة size() التي تستخدمها غير متوفرة في مكتبة C++ القياسية، وهناك وظائف مختلفة تسمى size() تعمل مع هياكل بيانات مختلفة، لكن تلك التي تستخدمها قد تكون خاصة بمكتبة معينة أو قد تكون وظيفة مخصصة لم تحددها.

استخدام عامل sizeof() (للمصفوفات على غرار C) مثل numbers في الكود لديك، للحصول على عدد العناصر، ومع ذلك، لاحظ أن ذلك يرجع الحجم الكلي للمصفوفة بالبايتات، وليس عدد العناصر:

#include <iostream>
using namespace std;

int main() {
    int numbers[] = {10, 20, 3, 30, 5, 7, 40};
    int numssize = sizeof(numbers) / sizeof(numbers[0]);
    cout << numssize << endl; // Output: 7
    return 0;
}

وإن كنت تستخدم عناصر من مكتبة Standard Template Library (STL) ، مثل المتجهات أو المصفوفات أو السلاسل، فتستطيع الإعتماد على دالة std::size():

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

int main() {
    vector<int> numbers = {10, 20, 3, 30, 5, 7, 40};
    int numssize = std::size(numbers);
    cout << numssize << endl; // Output: 7
    return 0;
}

ولو لديك وظيفة مخصصة أو مكتبة تحدد دالة size() خصيصًا لحالة استخدامك، فتحتاج إلى التأكد من أن الوظيفة مرئية في نطاق وظيفتك main()، وتحقق من مكان تعريف الوظيفة وتضمين الرؤوس أو الملفات الضرورية لإحضارها إلى النطاق.

  • 1
نشر

يمكنك استخدام  sizeof بدالا من size  لكي يصبح الكود بهذه الطريقه 

#include <iostream>

using namespace std;

int main() {
    int numbers[] = {10, 20, 3, 30, 5, 7, 40};
    int numssize = sizeof(numbers) / sizeof(numbers[0]);

    cout << "Array size: " << numssize << endl;

    return 0;
}

 

  • 0
نشر

المشكلة في الcompiler الذي تستخدمه، فبعضه يكون يحتوي عليها مباشرة و البعض الأخر لا، جربت الكود و إشتغل عندي بدون مشاكل، من أجل حل المشكلة المكتبة iterator تحتوي على الدالة نفسها، يمكنك تغيير الكود بالشكل التالي ليشتغل معك بدون مشاكل:

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

int main()
{
  int numbers[] = { 10, 20, 3, 30, 5, 7, 40 };
  int numssize = std::size(numbers);
  cout << numssize;
  return 0;
}

 

  • 0
نشر

 الخطا  أنك تستخدم size دون استخدام الفضاء الخاص بها std.  لتصحيح ذلك، يجب عليك إم استخدام std::size بدلاً من size.

#include <iostream>
using namespace std;

int main()
{
  int numbers[] = { 10, 20, 3, 30, 5, 7, 40 };
  int numssize = std::size(numbers);  // استخدام std::size بدلاً من size
  cout << numssize;
  return 0;
}

 

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...