Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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ış