فئة System::Array

Array class

فئة تمثل بنية بيانات المصفوفة. يجب تخصيص كائنات هذه الفئة فقط باستخدام دالتي System::MakeArray() وSystem::MakeObject(). لا تقم أبداً بإنشاء نسخة من هذا النوع على المكدس أو باستخدام المشغل new، لأن ذلك سيسبب أخطاءً وقت التشغيل أو أعطالاً في التأكيد. احرص دائماً على تغليف هذه الفئة في مؤشر System::SmartPtr واستخدام هذا المؤشر لتمريرها إلى الدوال كمعامل.

template<typename T>class Array : public virtual System::Object,
                                  public System::Collections::Generic::IList<T>
معاملالوصف
Tنوع عناصر المصفوفة

Nested classes

الطرق

طريقةالوصف
Add(const T&) overrideغير مدعوم لأن المصفوفة التي يمثلها الكائن الحالي للقراءة فقط.
Array()ينشئ مصفوفة فارغة.
Array(int, const T&)منشئ تعبئة.
Array(typename std::enable_if<std::is_arithmetic<T>::value&&std::is_arithmetic<ValueType>::value&&std::is_convertible<ValueType, T>::value, int>::type, ValueType)منشئ تعبئة.
Array(int, const T)منشئ تعبئة.
Array(vector_t&&)منشئ نقل.
Array(const vector_t&)منشئ النسخ.
Array(const std::vector<Q>&)ينشئ كائن Array ويملأه بالقيم المنسوخة من كائن std::vector الذي يكون نوع قيمه هو نفسه T لكنه مختلف عن UnderlyingType.
Array(std::vector<Q>&&)ينشئ كائن Array ويملأه بالقيم المنقولة من كائن std::vector الذي يكون نوع قيمه هو نفسه T لكنه مختلف عن UnderlyingType.
Array(std::initializer_list<UnderlyingType>)ينشئ كائن Array ويملأه بالقيم من قائمة التهيئة المحددة التي تحتوي على عناصر من نوع UnderlyingType.
Array(const std::array<UnderlyingType, InitArraySize>&)ينشئ كائن Array ويملأه بالقيم من المصفوفة المحددة التي تحتوي على عناصر من نوع UnderlyingType.
Array(std::initializer_list<bool>, int)ينشئ كائن Array ويملأه بالقيم من قائمة التهيئة المحددة التي تحتوي على عناصر من نوع bool.
begin()يعيد مُكرِّر إلى العنصر الأول في الحاوية. إذا كانت الحاوية فارغة، سيكون المُكرِّر المعاد مساوياً لـ end().
begin() constيعيد مُكرِّر إلى العنصر الأول في الحاوية المؤهلة بالثابت. إذا كانت الحاوية فارغة، سيكون المُكرِّر المعاد مساوياً لـ end().
static BinarySearch(System::ArrayPtr<T>, const T&)ينفّذ بحثًا ثنائيًا في المصفوفة المرتبة.
static BinarySearch(System::ArrayPtr<T>, const Y&, const SharedPtr<Collections::Generic::IComparer<Z>>&)غير مُنفّذ.
cbegin() constيعيد مُكرِّر إلى العنصر الأول المؤهل بالثابت في الحاوية. إذا كانت الحاوية فارغة، سيكون المُكرِّر المعاد مساوياً لـ cend().
cend() constيعيد مُكرِّر إلى العنصر الذي يلي العنصر الأخير في الحاوية. هذا العنصر يعمل كعنصر نائب؛ محاولة الوصول إليه تؤدي إلى سلوك غير معرف.
Clear() overrideغير مدعوم لأن المصفوفة التي يمثلها الكائن الحالي للقراءة فقط.
static Clear(const ArrayPtr<Type>&, int, int)يستبدل القيم count بدءًا من الفهرس startIndex في المصفوفة المحددة بالقيم الافتراضية.
Clone()ينسخ المصفوفة.
static ConstrainedCopy(const ArrayPtr<SrcType>&, int64_t, const ArrayPtr<DstType>&, int64_t, int64_t)ينسخ نطاقًا من العناصر من System.Array بدءًا من المصدر المحدد.
Contains(const T&) const overrideيحدد ما إذا كان العنصر المحدد موجودًا في المصفوفة.
static ConvertAll(ArrayPtr<InputType>, Converter<InputType, OutputType>)ينشئ كائنًا جديدًا من نوع Array ويملأه بعناصر المصفوفة المحددة المحوّلة إلى النوع OutputType باستخدام المفوض المحدد للتحويل.
static ConvertAll(ArrayPtr<InputType>, std::function<OutputType(InputType)>)ينشئ كائنًا جديدًا من نوع Array ويملأه بعناصر المصفوفة المحددة المحوّلة إلى النوع OutputType باستخدام كائن الدالة المحدد للمحول.
static Copy(const ArrayPtr<SrcType>&, const ArrayPtr<DstType>&, int64_t)ينسخ العدد المحدد من العناصر من مصفوفة المصدر إلى مصفوفة الوجهة.
static Copy(System::Details::ArrayView<SrcType>, const ArrayPtr<DstType>&, int64_t)ينسخ العدد المحدد من العناصر من عرض مصفوفة المصدر إلى مصفوفة الوجهة.
static Copy(const ArrayPtr<SrcType>&, System::Details::ArrayView<DstType>, int64_t)ينسخ العدد المحدد من العناصر من مصفوفة المصدر إلى عرض مصفوفة الوجهة.
static Copy(System::Details::ArrayView<SrcType>, System::Details::ArrayView<DstType>, int64_t)ينسخ العدد المحدد من العناصر من عرض مصفوفة المصدر إلى عرض مصفوفة الوجهة.
static Copy(System::Details::StackArray<SrcType, N>&, const ArrayPtr<DstType>&, int64_t)ينسخ العدد المحدد من العناصر من مصفوفة المصدر على المكدس إلى مصفوفة الوجهة.
static Copy(const ArrayPtr<SrcType>&, System::Details::StackArray<DstType, N>&, int64_t)ينسخ العدد المحدد من العناصر من مصفوفة المصدر إلى مصفوفة الوجهة على المكدس.
static Copy(System::Details::StackArray<SrcType, NS>&, System::Details::StackArray<DstType, ND>&, int64_t)ينسخ العدد المحدد من العناصر من مصفوفة المصدر على المكدس إلى مصفوفة الوجهة على المكدس.
static Copy(const ArrayPtr<SrcType>&, int64_t, const ArrayPtr<DstType>&, int64_t, int64_t)ينسخ عددًا محددًا من العناصر من مصفوفة المصدر بدءًا من الفهرس المحدد إلى الموضع المحدد في مصفوفة الوجهة.
static Copy(System::Details::ArrayView<SrcType>, int64_t, const ArrayPtr<DstType>&, int64_t, int64_t)ينسخ عددًا محددًا من العناصر من عرض مصفوفة المصدر بدءًا من الفهرس المحدد إلى الموضع المحدد في مصفوفة الوجهة.
static Copy(const ArrayPtr<SrcType>&, int64_t, System::Details::ArrayView<DstType>, int64_t, int64_t)ينسخ عددًا محددًا من العناصر من مصفوفة المصدر بدءًا من الفهرس المحدد إلى الموضع المحدد في عرض مصفوفة الوجهة.
static Copy(System::Details::ArrayView<SrcType>, int64_t, System::Details::ArrayView<DstType>, int64_t, int64_t)ينسخ عددًا محددًا من العناصر من عرض مصفوفة المصدر بدءًا من الفهرس المحدد إلى الموضع المحدد في عرض مصفوفة الوجهة.
static Copy(System::Details::StackArray<SrcType, N>&, int64_t, const ArrayPtr<DstType>&, int64_t, int64_t)ينسخ عددًا محددًا من العناصر من مصفوفة المصدر على المكدس بدءًا من الفهرس المحدد إلى الموضع المحدد في مصفوفة الوجهة.
static Copy(const ArrayPtr<SrcType>&, int64_t, System::Details::StackArray<DstType, N>&, int64_t, int64_t)ينسخ عددًا محددًا من العناصر من مصفوفة المصدر بدءًا من الفهرس المحدد إلى الموضع المحدد في مصفوفة الوجهة على المكدس.
static Copy(System::Details::StackArray<SrcType, NS>&, int64_t, System::Details::StackArray<DstType, ND>&, int64_t, int64_t)ينسخ عددًا محددًا من العناصر من مصفوفة المصدر على المكدس بدءًا من الفهرس المحدد إلى الموضع المحدد في مصفوفة الوجهة على المكدس.
static Copy(System::Details::ArrayView<SrcType>&, int64_t, System::Details::StackArray<DstType, ND>&, int64_t, int64_t)ينسخ عددًا محددًا من العناصر من عرض مصفوفة المصدر بدءًا من الفهرس المحدد إلى الموضع المحدد في مصفوفة الوجهة على المكدس.
CopyTo(ArrayPtr<T>, int) overrideينسخ جميع عناصر المصفوفة الحالية إلى مصفوفة الوجهة المحددة. تُدرج العناصر في مصفوفة الوجهة بدءًا من الفهرس المحدد بواسطة معامل arrayIndex.
CopyTo(const ArrayPtr<DstType>&, int64_t) constينسخ جميع عناصر المصفوفة الحالية إلى مصفوفة الوجهة المحددة. تُدرج العناصر في مصفوفة الوجهة بدءًا من الفهرس المحدد بواسطة معامل dstIndex.
CopyTo(const System::Details::ArrayView<DstType>&, int64_t) constينسخ جميع عناصر المصفوفة الحالية إلى عرض مصفوفة الوجهة المحدد. تُدرج العناصر في عرض مصفوفة الوجهة بدءًا من الفهرس المحدد بواسطة معامل dstIndex.
CopyTo(const ArrayPtr<DstType>&, int64_t, int64_t, int64_t) constينسخ عددًا محددًا من العناصر من المصفوفة الحالية بدءًا من الموضع المحدد إلى مصفوفة الوجهة المحددة. تُدرج العناصر في مصفوفة الوجهة بدءًا من الفهرس المحدد بواسطة معامل dstIndex.
CopyTo(const System::Details::ArrayView<DstType>&, int64_t, int64_t, int64_t) constينسخ عددًا محددًا من العناصر من المصفوفة الحالية بدءًا من الموضع المحدد إلى عرض مصفوفة الوجهة المحدد. يتم إدراج العناصر في عرض مصفوفة الوجهة بدءًا من الفهرس المحدد بواسطة معامل dstIndex.
Count() constيرجع عددًا يمثل إجمالي عدد جميع العناصر في جميع أبعاد المصفوفة.
crbegin() constيعيد مُكرِّر عكسي إلى العنصر الأول في الحاوية المعكوسة. وهو يطابق العنصر الأخير في الحاوية غير المعكوسة. إذا كانت الحاوية فارغة، يكون المُكرِّر المعاد مساوياً لـ crend().
crend() constيعيد مُكرِّر عكسي إلى العنصر الذي يلي العنصر الأخير في الحاوية المعكوسة. وهو يطابق العنصر الذي يسبق العنصر الأول في الحاوية غير المعكوسة. هذا العنصر يعمل كعنصر نائب، ومحاولة الوصول إليه تؤدي إلى سلوك غير معرف.
data()يرجع مرجعًا إلى بنية البيانات الداخلية المستخدمة لتخزين عناصر المصفوفة.
data() constيرجع مرجعًا ثابتًا إلى بنية البيانات الداخلية المستخدمة لتخزين عناصر المصفوفة.
data_ptr()يرجع مؤشرًا خامًا إلى بداية مخزن الذاكرة حيث تُخزن عناصر المصفوفة.
data_ptr() constيرجع مؤشرًا خامًا ثابتًا إلى بداية مخزن الذاكرة حيث تُخزن عناصر المصفوفة.
end()يعيد مُكرِّر إلى العنصر الذي يلي العنصر الأخير في الحاوية. هذا العنصر يعمل كعنصر نائب؛ محاولة الوصول إليه تؤدي إلى سلوك غير معرف.
end() constيعيد مُكرِّر إلى العنصر الذي يلي العنصر الأخير في الحاوية المؤهلة بالثابت. هذا العنصر يعمل كعنصر نائب؛ محاولة الوصول إليه تؤدي إلى سلوك غير معرف.
static Exists(ArrayPtr<T>, std::function<bool(T)>)يحدد ما إذا كان كائن Array المحدد يحتوي على عنصر يفي بمتطلبات الدالة الشرطية المحددة.
static Find(System::ArrayPtr<T>, System::Predicate<T>)يبحث عن أول عنصر في المصفوفة المحددة يفي بشروط الدالة الشرطية المحددة.
static FindAll(System::ArrayPtr<T>, System::Predicate<T>)يسترجع جميع العناصر التي تطابق الشروط المحددة بواسطة الدالة الشرطية المحددة.
static FindIndex(System::ArrayPtr<T>, System::Predicate<T>)يبحث عن أول عنصر في المصفوفة المحددة يفي بشروط الدالة الشرطية المحددة.
static ForEach(const ArrayPtr<T>&, System::Action<T>)ينفّذ الإجراء المحدد على كل عنصر من المصفوفة المحددة.
get_Count() const overrideيرجع حجم المصفوفة.
get_IsReadOnly() const overrideيشير إلى ما إذا كانت المصفوفة للقراءة فقط.
get_Length() constيرجع عددًا صحيحًا 32-بت يمثل إجمالي عدد جميع العناصر في جميع أبعاد المصفوفة.
get_LongLength() constيرجع عددًا صحيحًا 64-بت يمثل إجمالي عدد جميع العناصر في جميع أبعاد المصفوفة.
get_Rank() constغير مُنفّذ.
GetEnumerator() overrideيرجع مؤشرًا إلى كائن Enumerator الذي يوفر واجهة IEnumerator لعناصر المصفوفة التي يمثلها الكائن الحالي.
GetLength(int)يرجع عدد العناصر في البُعد المحدد.
GetLongLength(int)يرجع عدد العناصر في البُعد المحدد كعدد صحيح 64-بت.
GetLowerBound(int) constيرجع الحد الأدنى للبُعد المحدد.
GetSizeTLength() constيرجع متغيّر std::size_t يمثل إجمالي عدد جميع العناصر في جميع أبعاد المصفوفة.
GetUpperBound(int)يرجع الحد الأعلى للبُعد المحدد.
idx_get(int) const overrideيرجع العنصر عند الفهرس المحدد.
idx_set(int, T) overrideيضبط القيمة المحددة كعنصر للمصفوفة عند الفهرس المحدد.
IndexOf(const T&) const overrideيحدد فهرس أول ظهور للعنصر المحدد في المصفوفة.
static IndexOf(const ArrayPtr<ArrayType>&, const ValueType&)يحدد فهرس أول ظهور للعنصر المحدد في المصفوفة.
static IndexOf(const ArrayPtr<ArrayType>&, const ValueType&, int)يحدد فهرس أول ظهور للعنصر المحدد في المصفوفة بدءًا من الفهرس المحدد.
static IndexOf(const ArrayPtr<ArrayType>&, const ValueType&, int, int)يحدد فهرس أول ظهور للعنصر المحدد في نطاق من عناصر المصفوفة المحددة بواسطة فهرس البداية وعدد العناصر في النطاق.
Init(const T)يملأ المصفوفة التي يمثلها الكائن الحالي بالقيم من المصفوفة المحددة.
Initialize()يملأ المصفوفة بالكائنات المُنشأة افتراضيًا من النوع T.
Insert(int, const T&) overrideغير مدعوم لأن المصفوفة التي يمثلها الكائن الحالي للقراءة فقط.
static LastIndexOf(const ArrayPtr<ArrayType>&, const ValueType&, int, int)يحدد فهرس آخر ظهور للعنصر المحدد في نطاق من عناصر المصفوفة المحددة بواسطة فهرس البداية وعدد العناصر في النطاق.
static LastIndexOf(const ArrayPtr<ArrayType>&, const ValueType&, int)يحدد فهرس آخر ظهور للعنصر المحدد في المصفوفة بدءًا من الفهرس المحدد.
static LastIndexOf(const ArrayPtr<ArrayType>&, const ValueType&)يحدد فهرس آخر ظهور للعنصر المحدد في المصفوفة.
Max() constيجد العنصر الأكبر في المصفوفة باستخدام operator<() لمقارنة العناصر.
Min() constيجد العنصر الأصغر في المصفوفة باستخدام operator<() لمقارنة العناصر.
operator[](int)يرجع عنصرًا عند الفهرس المحدد.
operator[](int) constيرجع عنصرًا عند الفهرس المحدد.
rbegin()يرجع مكرراً عكسياً إلى العنصر الأول في الحاوية المعكوسة. وهو يتطابق مع العنصر الأخير في الحاوية غير المعكوسة. إذا كانت الحاوية فارغة، فإن المكرر المعاد يساوي rend().
rbegin() constيرجع مكرراً عكسياً إلى العنصر الأول في الحاوية المعكوسة. وهو يتطابق مع العنصر الأخير في الحاوية غير المعكوسة. إذا كانت الحاوية فارغة، فإن المكرر المعاد يساوي rend().
Remove(const T&) overrideغير مدعوم لأن المصفوفة التي يمثلها الكائن الحالي للقراءة فقط.
RemoveAt(int) overrideغير مدعوم لأن المصفوفة التي يمثلها الكائن الحالي للقراءة فقط.
rend()يعيد مُكرِّر عكسي إلى العنصر الذي يلي العنصر الأخير في الحاوية المعكوسة. وهو يطابق العنصر الذي يسبق العنصر الأول في الحاوية غير المعكوسة. هذا العنصر يعمل كعنصر نائب، ومحاولة الوصول إليه تؤدي إلى سلوك غير معرف.
rend() constيعيد مُكرِّر عكسي إلى العنصر الذي يلي العنصر الأخير في الحاوية المعكوسة. وهو يطابق العنصر الذي يسبق العنصر الأول في الحاوية غير المعكوسة. هذا العنصر يعمل كعنصر نائب، ومحاولة الوصول إليه تؤدي إلى سلوك غير معرف.
static Resize(ArrayPtr<Type>&, int)يغيّر حجم المصفوفة المحددة إلى القيمة المحددة أو ينشئ مصفوفة جديدة بالحجم المحدد.
static Reverse(const ArrayPtr<Type>&)يعكس العناصر في المصفوفة المحددة.
static Reverse(const ArrayPtr<Type>&, int, int)يعكس نطاقًا من العناصر في المصفوفة المحددة.
SetTemplateWeakPtr(uint32_t) overrideيجعل المصفوفة تتعامل مع المؤشرات المخزنة كضعيفة (إن كان ذلك ممكنًا).
SetValue(const T&, int)يضبط قيمة العنصر عند الفهرس المحدد.
static Sort(const ArrayPtr<Type>&)يرتب العناصر في المصفوفة المحددة باستخدام المقارن الافتراضي.
static Sort(const ArrayPtr<Type>&, int, int)يرتب نطاقًا من العناصر في المصفوفة المحددة باستخدام المقارن الافتراضي.
static Sort(const ArrayPtr<Type>&, const SharedPtr<System::Collections::Generic::IComparer<T>>&)يرتب العناصر في المصفوفة المحددة باستخدام المقارن المحدد.
static Sort(const ArrayPtr<Type>&, const SharedPtr<System::Collections::Generic::IComparer<Y>>&)غير مُنفّذ.
static Sort(const ArrayPtr<TKey>&, const ArrayPtr<TValue>&)يرتب مصفوفتين إحداهما تحتوي على المفاتيح والأخرى على العناصر المقابلة، بناءً على قيم المصفوفة التي تحتوي على المفاتيح، حيث يتم مقارنة عناصرها باستخدام operator<.
static Sort(const ArrayPtr<TKey>&, const ArrayPtr<TValue>&, int, int)يرتب مصفوفتين إحداهما تحتوي على المفاتيح والأخرى على العناصر المقابلة، بناءً على قيم المصفوفة التي تحتوي على المفاتيح، حيث يتم مقارنة عناصرها باستخدام المقارن الافتراضي.
static TrueForAll(System::ArrayPtr<T>, System::Predicate<T>)يحدد ما إذا كانت جميع العناصر في المصفوفة المحددة تفي بالشروط المحددة بواسطة الدالة الشرطية المحددة.
virtualizeBeginConstIterator() const overrideيحصل على تنفيذ begin const iterator للحاوية الحالية.
virtualizeBeginIterator() overrideيحصل على تنفيذ begin iterator للحاوية الحالية.
virtualizeEndConstIterator() const overrideيحصل على تنفيذ end const iterator للحاوية الحالية.
virtualizeEndIterator() overrideيحصل على تنفيذ end iterator للحاوية الحالية.

Typedefs

تعريف نوعالوصف
const_iteratorنوع المكرر الثابت.
const_reverse_iteratorنوع المكرر العكسي الثابت.
EnumerablePtrاسم مستعار لنوع المؤشر المشترك الذي يشير إلى كائن IEnumerable يحتوي على عناصر من النوع T.
EnumeratorPtrاسم مستعار لنوع المؤشر المشترك الذي يشير إلى كائن IEnumerator يحتوي على عناصر من النوع T.
iteratorنوع المكرر.
reverse_iteratorنوع المكرر العكسي.
UnderlyingTypeاسم مستعار للنوع المستخدم لتمثيل كل عنصر في المصفوفة.
ValueTypeاسم مستعار لنوع عناصر المصفوفة.

ملاحظات

#include <system/array.h>
#include <system/smart_ptr.h>

using namespace System;

void Print(const SmartPtr<Array<int32_t>> &arrayPtr)
{
  for (auto item: arrayPtr)
  {
    std::cout << item << ' ';
  }
  std::cout << std::endl;
}

int main()
{
  // إنشاء وملء المصفوفة.
  auto arrayPtr = MakeObject<Array<int32_t>>(5, 0);
  for (auto i = 0; i < arrayPtr->get_Length(); ++i)
  {
    arrayPtr[i] = 5 - i;
  }

  // طباعة عناصر المصفوفة.
  Print(arrayPtr);

  // رتّب عناصر المصفوفة تصاعديًا.
  Array<int32_t>::Sort(arrayPtr);

  // طباعة عناصر المصفوفة.
  Print(arrayPtr);

  // اطبع عدد عناصر المصفوفة.
  std::cout << arrayPtr->get_Length() << std::endl;

  // اطبع فهرس العنصر الذي يساوي 4.
  std::cout << arrayPtr->IndexOf(4) << std::endl;

  // غيّر حجم المصفوفة.
  Array<int32_t>::Resize(arrayPtr, 3);

  // طباعة عناصر المصفوفة.
  Print(arrayPtr);

  return 0;
}
/*
This code example produces the following output:
5 4 3 2 1
1 2 3 4 5
5
3
1 2 3
*/

انظر أيضًا