Aracılığıyla paylaş


CAtlArray Sınıfı

Bu sınıf bir dizi nesnesi uygular.

Sözdizimi

template<typename E, class ETraits = CElementTraits<E>>
class CAtlArray

Parametreler

E
Dizide depolanacak veri türü.

ETraits
Öğeleri kopyalamak veya taşımak için kullanılan kod.

Üyeler

Yöntemler

İşlev Açıklama
Topla Dizi nesnesine öğe eklemek için bu yöntemi çağırın.
Arkasına Ekle Bir dizinin içeriğini başka bir dizinin sonuna eklemek için bu yöntemi çağırın.
AssertValid Dizi nesnesinin geçerli olduğunu onaylamak için bu yöntemi çağırın.
CAtlArray Oluşturucu.
~CAtlArray Yok edici.
Kopyala Bir dizinin öğelerini başka bir diziye kopyalamak için bu yöntemi çağırın.
FreeExtra Dizideki boş öğeleri kaldırmak için bu yöntemi çağırın.
GetAt Dizi nesnesinden tek bir öğe almak için bu yöntemi çağırın.
GetCount Dizide depolanan öğe sayısını döndürmek için bu yöntemi çağırın.
GetData Dizideki ilk öğeye bir işaretçi döndürmek için bu yöntemi çağırın.
InsertArrayAt Bir diziyi başka bir diziye eklemek için bu yöntemi çağır.
InsertAt Dizi nesnesine yeni bir öğe (veya bir öğenin birden çok kopyası) eklemek için bu yöntemi çağırın.
IsEmpty Dizinin boş olup olmadığını test etmek için bu yöntemi çağırın.
KaldırTüm Dizi nesnesinden tüm öğeleri kaldırmak için bu yöntemi çağırın.
RemoveAt Diziden bir veya daha fazla öğeyi kaldırmak için bu yöntemi çağırın.
SetAt Dizi nesnesindeki bir öğenin değerini ayarlamak için bu yöntemi çağırın.
SetAtGrow Dizi nesnesindeki bir öğenin değerini ayarlamak için bu yöntemi çağırın ve diziyi gerektiği gibi genişletin.
SetCount Dizi nesnesinin boyutunu ayarlamak için bu yöntemi çağırın.

İşleçler

Operator Açıklama
operator [] Dizideki bir öğeye başvuru döndürmek için bu işleci çağırın.

Tür tanımları

Tür tanımı Açıklama
INARGTYPE Diziye öğe eklemek için kullanılacak veri türü.
OUTARGTYPE Diziden öğe almak için kullanılacak veri türü.

Açıklamalar

CAtlArray kullanıcı tanımlı türde bir öğe dizisi oluşturmak ve yönetmek için yöntemler sağlar. Standart C dizilerine benzer olsa da, CAtlArray nesne dinamik olarak küçülebilir ve gerektiğinde büyüyebilir. Dizi dizini her zaman 0 konumunda başlar ve üst sınır sabitlenebilir veya yeni öğeler eklendikçe genişletilmesine izin verilir.

Az sayıda öğe içeren diziler için, ATL sınıfı CSimpleArray kullanılabilir.

CAtlArray MFC'nin CArray sınıfıyla yakından ilişkilidir ve serileştirme desteği olmasa da bir MFC projesinde çalışır.

Daha fazla bilgi için bkz . ATL Koleksiyon Sınıfları.

Gereksinimler

Üst bilgi: atlcoll.h

CAtlArray::Add

Dizi nesnesine öğe eklemek için bu yöntemi çağırın.

size_t Add(INARGTYPE element);
size_t Add();

Parametreler

öğe
Diziye eklenecek öğe.

Dönüş Değeri

Eklenen öğenin dizinini döndürür.

Açıklamalar

Yeni öğe dizinin sonuna eklenir. Hiçbir öğe sağlanmazsa, boş bir öğe eklenir; diğer bir ifadeyle, gerçek bir öğe eklenmiş gibi dizinin boyutu artırılır. İşlem başarısız olursa, E_OUTOFMEMORY bağımsız değişkeniyle AtlThrow çağrılır.

Örnek

// Declare an array of integers
CAtlArray<int> iArray;

iArray.Add(1);   // element 0
iArray.Add(2);   // element 1
iArray.Add();    // element 2

ATLASSERT(iArray.GetCount() == 3);   

CAtlArray::Append

Bir dizinin içeriğini başka bir dizinin sonuna eklemek için bu yöntemi çağırın.

size_t Append(const CAtlArray<E, ETraits>& aSrc);

Parametreler

aSrc
Eklenecek dizi.

Dönüş Değeri

Eklenen ilk öğenin dizinini döndürür.

Açıklamalar

Sağlanan dizideki öğeler var olan dizinin sonuna eklenir. Gerekirse, yeni öğeleri barındırmak için bellek ayrılır.

Diziler aynı türde olmalıdır ve kendisine bir dizi eklemek mümkün değildir.

Hata ayıklama derlemelerinde, bağımsız değişken geçerli bir dizi değilse CAtlArray veya aSrc aynı nesneye başvuruyorsa bir ATLASSERT oluşturulur. Yayın derlemelerinde geçersiz bağımsız değişkenler öngörülemeyen davranışlara yol açabilir.

Örnek

// Declare two integer arrays
CAtlArray<int> iArray1,iArray2;

iArray1.Add(1);   // element 0
iArray1.Add(2);   // element 1

iArray2.Add(3);   // element 0
iArray2.Add(4);   // element 1

// Append iArray2 to iArray1
iArray1.Append(iArray2);

ATLASSERT(iArray1.GetCount() == 4);   

CAtlArray::AssertValid

Dizi nesnesinin geçerli olduğunu onaylamak için bu yöntemi çağırın.

void AssertValid() const;

Açıklamalar

Dizi nesnesi geçerli değilse, ATLASSERT bir onay oluşturur. Bu yöntem yalnızca _DEBUG tanımlandığında kullanılabilir.

Örnek

CAtlArray<float> fArray;
// AssertValid only exists in debug builds
#ifdef _DEBUG
fArray.AssertValid();   
#endif

CAtlArray::CAtlArray

Oluşturucu.

CAtlArray() throw();

Açıklamalar

Dizi nesnesini başlatır.

Örnek

CAtlArray<int> iArray;   

CAtlArray::~CAtlArray

Yok edici.

~CAtlArray() throw();

Açıklamalar

Dizi nesnesi tarafından kullanılan tüm kaynakları serbest getirir.

CAtlArray::Copy

Bir dizinin öğelerini başka bir diziye kopyalamak için bu yöntemi çağırın.

void Copy(const CAtlArray<E, ETraits>& aSrc);

Parametreler

aSrc
Bir diziye kopyalanacak öğelerin kaynağı.

Açıklamalar

Bir dizinin öğelerini başka bir dizinin öğeleriyle üzerine yazmak için bu yöntemi çağırın. Gerekirse, yeni öğeleri barındırmak için bellek ayrılır. Bir dizinin öğelerini kendisine kopyalamak mümkün değildir.

Dizinin mevcut içeriği korunacaksa, bunun yerine CAtlArray::Append kullanın.

Hata ayıklama derlemelerinde, mevcut CAtlArray nesne geçerli değilse veya aSrc aynı nesneye başvuruyorsa bir ATLASSERT oluşturulur. Yayın derlemelerinde geçersiz bağımsız değişkenler öngörülemeyen davranışlara yol açabilir.

Not

CAtlArray::CopyCAutoPtr sınıfıyla oluşturulan öğelerden oluşan dizileri desteklemez.

Örnek

CAtlArray<int> iArrayS, iArrayT;

iArrayS.Add(1);
iArrayS.Add(2);

iArrayT.Add(3);
iArrayT.Add(4);

iArrayT.Copy(iArrayS);

ATLASSERT(iArrayT.GetCount() == 2);
ATLASSERT(iArrayT[0] == 1);
ATLASSERT(iArrayT[1] == 2);   

CAtlArray::FreeExtra

Dizideki boş öğeleri kaldırmak için bu yöntemi çağırın.

void FreeExtra() throw();

Açıklamalar

Boş öğeler kaldırılır, ancak dizinin boyutu ve üst sınırı değişmeden kalır.

Hata ayıklama derlemelerinde, CAtlArray nesnesi geçerli değilse veya dizi en büyük boyutunu aşacaksa bir ATLASSERT oluşturulur.

CAtlArray::GetAt

Dizi nesnesinden tek bir öğe almak için bu yöntemi çağırın.

const E& GetAt(size_t iElement) const throw();
E& GetAt(size_t iElement) throw();

Parametreler

iElement
Döndürülecek dizi öğesinin dizin değeri.

Dönüş Değeri

Gerekli dizi öğesine başvuru döndürür.

Açıklamalar

Hata ayıklama derlemelerinde, iElement dizideki öğe sayısını aşarsa ATLASSERT tetiklenir. Yayın derlemelerinde geçersiz bir bağımsız değişken öngörülemeyen davranışlara yol açabilir.

Örnek

// Declare an array of integers

CAtlArray<int> iMyArray;
int element;

// Add ten elements to the array
for (int i = 0; i < 10; i++)
{
   iMyArray.Add(i);
}

// Use GetAt and SetAt to modify
// every element in the array

for (size_t i = 0; i < iMyArray.GetCount(); i++)
{
   element = iMyArray.GetAt(i);
   element *= 10;
   iMyArray.SetAt(i, element);
}   

CAtlArray::GetCount

Dizide depolanan öğe sayısını döndürmek için bu yöntemi çağırın.

size_t GetCount() const throw();

Dönüş Değeri

Dizide depolanan öğelerin sayısını döndürür.

Açıklamalar

Dizideki ilk öğe 0 konumunda olduğundan, tarafından GetCount döndürülen değer her zaman en büyük dizinden 1 büyüktür.

Örnek

CAtlArray::GetAt örneğine bakın.

CAtlArray::GetData

Dizideki ilk öğeye bir işaretçi döndürmek için bu yöntemi çağırın.

E* GetData() throw();
const E* GetData() const throw();

Dönüş Değeri

Dizideki ilk öğeyi depolayarak bellek konumuna bir işaretçi döndürür. Kullanılabilir öğe yoksa NULL döndürülür.

Örnek

// Define an array of integers
CAtlArray<int> MyArray;

// Define a pointer
int* pData;

// Allocate enough space for 32 elements
// with buffer increase to be calculated
// automatically
MyArray.SetCount(32, -1);

// Set the pointer to the first element
pData = MyArray.GetData();

// Set array values directly
for (int j = 0; j < 32; j++, pData++)
{
   *pData = j * 10;   
}

CAtlArray::INARGTYPE

Diziye öğe eklemek için kullanılacak veri türü.

typedef ETraits::INARGTYPE INARGTYPE;

CAtlArray::InsertArrayAt

Bir diziyi başka bir diziye eklemek için bu yöntemi çağır.

void InsertArrayAt(size_t iStart, const CAtlArray<E, ETraits>* paNew);

Parametreler

iStart
Dizinin eklendiği dizin.

paNew
Eklenecek dizi.

Açıklamalar

paNew dizisinden öğeler, iStart öğesinden başlayarak dizi nesnesine kopyalanır. Varolan dizi öğelerinin üzerine yazılmasını önlemek için taşınır.

Hata ayıklama derlemelerinde, nesne geçerli değilse CAtlArray veya paNew işaretçisi NULL veya geçersizse bir ATLASSERT oluşturulur.

Not

CAtlArray::InsertArrayAtCAutoPtr sınıfıyla oluşturulan öğelerden oluşan dizileri desteklemez.

Örnek

// Define two integer arrays
CAtlArray<int> iTargetArray, iSourceArray;

// Add elements to first array
for (int x = 0; x < 10; x++)
{
   iTargetArray.Add(x);
}

// Add elements to the second array
for (int x = 0; x < 10; x++)
{
   iSourceArray.Add(x * 10);
}

// Insert the Source array into the Target
// array, starting at the 5th element.
iTargetArray.InsertArrayAt(5, &iSourceArray);   

CAtlArray::InsertAt

Dizi nesnesine yeni bir öğe (veya bir öğenin birden çok kopyası) eklemek için bu yöntemi çağırın.

void InsertAt(size_t iElement, INARGTYPE element, size_t nCount = 1);

Parametreler

iElement
Öğenin veya öğelerin eklendiği dizin.

öğe
Eklenecek öğenin veya öğelerin değeri.

nCount
Eklenecek öğe sayısı.

Açıklamalar

iElement dizininden başlayarak diziye bir veya daha fazla öğe ekler. Varolan öğelerin üzerine yazılmasını önlemek için taşınır.

Hata ayıklama derlemelerinde nesne geçersizse, eklenecek öğe sayısı sıfırsa veya birleştirilmiş öğe sayısı dizinin içeremeyecek kadar büyük olması durumunda CAtlArray BIR ATLASSERT oluşturulur. Perakende derlemelerinde geçersiz parametrelerin geçirilmesi öngörülemeyen sonuçlara neden olabilir.

Örnek

// Declare an array of integers
CAtlArray<int> iBuffer;

// Add elements to the array
for (int b = 0; b < 10; b++)
{
   iBuffer.Add(0);
}

// Instert ten 1's into the array
// at position 5
iBuffer.InsertAt(5, 1, 10);   

CAtlArray::IsEmpty

Dizinin boş olup olmadığını test etmek için bu yöntemi çağırın.

bool IsEmpty() const throw();

Dönüş Değeri

Dizi boşsa true, aksi takdirde false döndürür.

Açıklamalar

Dizi, öğe içermiyorsa boş olduğu söylenir. Bu nedenle, dizi boş öğeler içerse bile boş değildir.

Örnek

// Define an array of chars
CAtlArray<char> cArray;

// Add an element
cArray.Add('a');

// Confirm array is not empty
ATLASSERT(!cArray.IsEmpty());

// Remove all elements
cArray.RemoveAll();

// Confirm array is empty
ATLASSERT(cArray.IsEmpty());   

CAtlArray::operator []

Dizideki bir öğeye başvuru döndürmek için bu işleci çağırın.

E& operator[](size_t ielement) throw();
const E& operator[](size_t ielement) const throw();

Parametreler

iElement
Döndürülecek dizi öğesinin dizin değeri.

Dönüş Değeri

Gerekli dizi öğesine başvuru döndürür.

Açıklamalar

CAtlArray::GetAt işlevine benzer bir işlev gerçekleştirir. CArray MFC sınıfından farklı olarak, bu işleç CAtlArray::SetAt yerine kullanılamaz.

Hata ayıklama derlemelerinde, iElement dizideki toplam öğe sayısını aşarsa BIR ATLASSERT oluşturulur. Perakende derlemelerinde geçersiz bir parametre öngörülemeyen sonuçlara neden olabilir.

CAtlArray::OUTARGTYPE

Diziden öğe almak için kullanılacak veri türü.

typedef ETraits::OUTARGTYPE OUTARGTYPE;

CAtlArray::RemoveAll

Dizi nesnesinden tüm öğeleri kaldırmak için bu yöntemi çağırın.

void RemoveAll() throw();

Açıklamalar

Dizi nesnesinden tüm öğeleri kaldırır.

Bu yöntem, diziyi yeniden boyutlandırmak için CAtlArray::SetCount'ı çağırır ve daha sonra ayrılan belleği serbest bırakır.

Örnek

CAtlArray::IsEmpty örneğine bakın.

CAtlArray::RemoveAt

Diziden bir veya daha fazla öğeyi kaldırmak için bu yöntemi çağırın.

void RemoveAt(size_t iElement, size_t nCount = 1);

Parametreler

iElement
Kaldırılacak ilk öğenin dizini.

nCount
Kaldırılacak öğe sayısı.

Açıklamalar

Diziden bir veya daha fazla öğe kaldırır. Kalan öğeler aşağı kaydırılır. Üst sınır azalmış, ancak CAtlArray::FreeExtra çağrısı yapılana kadar bellek serbest değildir.

Hata ayıklama derlemelerinde nesne geçerli değilse CAtlArray veya birleştirilmiş iElement ve nCount toplamı dizideki toplam öğe sayısını aşarsa ATLASSERT oluşturulur. Perakende derlemelerinde geçersiz parametreler öngörülemeyen sonuçlara neden olabilir.

Örnek

// Declare an array of chars
CAtlArray<char> cMyArray;

// Add ten elements to the array
for (int a = 0; a < 10; a++)
{
   cMyArray.Add('*');
}

// Remove five elements starting with
// the element at position 1
cMyArray.RemoveAt(1, 5);

// Free memory
cMyArray.FreeExtra();

// Confirm size of array
ATLASSERT(cMyArray.GetCount() == 5);   

CAtlArray::SetAt

Dizi nesnesindeki bir öğenin değerini ayarlamak için bu yöntemi çağırın.

void SetAt(size_t iElement, INARGTYPE element);

Parametreler

iElement
Ayarlanacağı dizi öğesine işaret eden dizin.

öğe
Belirtilen öğenin yeni değeri.

Açıklamalar

Hata ayıklama derlemelerinde, iElement dizideki öğe sayısını aşarsa ATLASSERT tetiklenir. Perakende derlemelerinde geçersiz bir parametre öngörülemeyen sonuçlara neden olabilir.

Örnek

CAtlArray::GetAt örneğine bakın.

CAtlArray::SetCount

Dizi nesnesinin boyutunu ayarlamak için bu yöntemi çağırın.

bool SetCount(size_t nNewSize, int nGrowBy = - 1);

Parametreler

nNewSize
Dizinin gerekli boyutu.

nGrowBy
Arabelleğin ne kadar büyük olduğunu belirlemek için kullanılan değer. -1 değeri, dahili olarak hesaplanan bir değerin kullanılmasına neden olur.

Dönüş Değeri

Dizi başarıyla yeniden boyutlandırılırsa true, aksi takdirde false döndürür.

Açıklamalar

Dizinin boyutu artırılabilir veya azaltılabilir. Artırılırsa, diziye fazladan boş öğeler eklenir. Azaltılırsa, en büyük dizinlere sahip öğeler silinir ve bellek boşaltılır.

Kullanmadan önce dizinin boyutunu ayarlamak için bu yöntemi kullanın. Kullanılmazsa SetCount , öğeleri ekleme işlemi ve gerçekleştirilen sonraki bellek ayırma işlemi performansı ve parça belleğini azaltır.

Örnek

CAtlArray::GetData örneğine bakın.

CAtlArray::SetAtGrow

Dizi nesnesindeki bir öğenin değerini ayarlamak için bu yöntemi çağırın ve diziyi gerektiği gibi genişletin.

void SetAtGrow(size_t iElement, INARGTYPE element);

Parametreler

iElement
Ayarlanacağı dizi öğesine işaret eden dizin.

öğe
Belirtilen öğenin yeni değeri.

Açıklamalar

Dizinin işaret ettiği öğenin değerini değiştirir. iElement dizinin geçerli boyutundan büyükse, dizi CAtlArray::SetCount çağrısı kullanılarak otomatik olarak artırılır. Hata ayıklama derlemelerinde nesne geçerli değilse CAtlArray bir ATLASSERT oluşturulur. Perakende derlemelerinde geçersiz parametreler öngörülemeyen sonuçlara neden olabilir.

Örnek

// Declare an array of integers
CAtlArray<int> iGrowArray;

// Add an element
iGrowArray.Add(0);

// Add an extra element at position 19.
// This will grow the array to accommodate.
iGrowArray.SetAtGrow(19, 0);

// Confirm size of new array
ATLASSERT(iGrowArray.GetCount() == 20);

// Note: the values at position 1 to 18
// are undefined.

Ayrıca bkz.

MMXSwarm Örneği
DynamicConsumer Örneği
UpdatePV Örneği
Kayan Yazı Örneği
CArray Sınıfı
Sınıfa Genel Bakış