فئة 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>
Parameterالوصف
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
*/

انظر أيضًا