System::Comparison sınıfı

Comparison class

Aynı türdeki iki nesneyi karşılaştıran yönteme işaretçi temsil eder. Bu tür yığına tahsis edilmeli ve fonksiyonlara değer olarak ya da referansla geçirilmelidir. Bu tür nesneleri yönetmek için System::SmartPtr sınıfını asla kullanmayın.

template<typename T>class Comparison : public System::MulticastDelegate<int(T, T)>
ParameterAçıklama
TYöntemin karşılaştırdığı nesnelerin türü

Yöntemler

YöntemAçıklama
Comparison(Y)Belirtilen çağrılabilir varlığa işaretçi temsil eden bir Comparison temsilcisi örneği oluşturur.
operator()(T, T)Mevcut nesnenin işaret ettiği çağrılabilir nesneyi çalıştırır.

Açıklamalar

#include "system/comparison.h"
#include "system/console.h"
#include "system/exceptions.h"
#include "system/string.h"
#include <algorithm>
#include <initializer_list>
#include <vector>

using namespace System;

// Dinamik bir dizi temsil eden şablon sınıfı.
template <typename T>
class MyArray
{
  // Dizi verilerini depolamak için kullanılır.
  std::vector<T> m_data;

public:
  // Dinamik dizimizin yeni bir örneğini oluşturur.
  MyArray(const std::initializer_list<T>& source) : m_data(source) {};

  // Dizi verilerini sıralamak için kullanılır. Bu yöntem bir örnek alır.
  // 'System::Comparison' şablon sınıfı.
  void Sort(Comparison<T> comparison)
  {
    if (comparison.IsNull())
    {
      throw ArgumentNullException(u"comparison");
    }
    std::sort(m_data.begin(), m_data.end(), comparison);
  }

  // Dinamik dizimizin sakladığı öğe sayısını döndürür.
  size_t get_Size()
  {
    return m_data.size();
  }

  // Belirtilen indeksteki bir öğeyi almak için kullanılır.
  T& operator[](int index)
  {
    if (index < 0 || index >= m_data.size())
    {
      throw IndexOutOfRangeException(u"index");
    }
    return m_data[index];
  }
};

int main() {
  // Belirtilen öğelerle MyArray sınıfının bir örneğini oluştur.
  MyArray<String> arr = {u"a", u"e", u"c", u"b", u"d"};

  // Dinamik dizinin artan öğelerine göre sırala.
  arr.Sort([](const String &a, const String &b) -> int
  {
    return String::Compare(a, b);
  });

  // Dinamik dizinin öğelerini yazdır.
  for (auto i = 0; i < arr.get_Size(); ++i)
  {
    Console::WriteLine(arr[i]);
  }

  return 0;
}
/*
This code example produces the following output:
a
b
c
d
e
*/

Ayrıca Bakınız