Kelas CAtlArray
Kelas ini mengimplementasikan objek array.
Sintaks
template<typename E, class ETraits = CElementTraits<E>>
class CAtlArray
Parameter
E
Jenis data yang akan disimpan dalam array.
ETraits
Kode yang digunakan untuk menyalin atau memindahkan elemen.
Anggota
Metode
Fungsi | Deskripsi |
---|---|
Tambahkan | Panggil metode ini untuk menambahkan elemen ke objek array. |
Tambah | Panggil metode ini untuk menambahkan konten satu array ke ujung array lainnya. |
AssertValid | Panggil metode ini untuk mengonfirmasi bahwa objek array valid. |
CAtlArray | Konstruktor. |
~CAtlArray | Destruktor. |
Menyalin | Panggil metode ini untuk menyalin elemen dari satu array ke array lainnya. |
FreeExtra | Panggil metode ini untuk menghapus elemen kosong apa pun dari array. |
GetAt | Panggil metode ini untuk mengambil satu elemen dari objek array. |
GetCount | Panggil metode ini untuk mengembalikan jumlah elemen yang disimpan dalam array. |
GetData | Panggil metode ini untuk mengembalikan penunjuk ke elemen pertama dalam array. |
InsertArrayAt | Panggil metode ini untuk menyisipkan satu array ke array lainnya. |
SisipkanAt | Panggil metode ini untuk menyisipkan elemen baru (atau beberapa salinan elemen) ke dalam objek array. |
IsEmpty | Panggil metode ini untuk menguji apakah array kosong. |
HapusSemua | Panggil metode ini untuk menghapus semua elemen dari objek array. |
HapusAt | Panggil metode ini untuk menghapus satu atau beberapa elemen dari array. |
SetAt | Panggil metode ini untuk mengatur nilai elemen dalam objek array. |
SetAtGrow | Panggil metode ini untuk mengatur nilai elemen dalam objek array, memperluas array sesuai kebutuhan. |
SetCount | Panggil metode ini untuk mengatur ukuran objek array. |
Operator
Operator | Deskripsi |
---|---|
operator [] |
Panggil operator ini untuk mengembalikan referensi ke elemen dalam array. |
Typedefs
Typedef | Deskripsi |
---|---|
INARGTYPE | Jenis data yang digunakan untuk menambahkan elemen ke array. |
OUTARGTYPE | Jenis data yang digunakan untuk mengambil elemen dari array. |
Keterangan
CAtlArray
menyediakan metode untuk membuat dan mengelola array elemen dari jenis yang ditentukan pengguna. Meskipun mirip dengan array C standar, CAtlArray
objek dapat menyusut dan tumbuh secara dinamis seperlunya. Indeks array selalu dimulai pada posisi 0, dan batas atas dapat diperbaiki, atau diizinkan untuk memperluas saat elemen baru ditambahkan.
Untuk array dengan sejumlah kecil elemen, CSimpleArray kelas ATL dapat digunakan.
CAtlArray
terkait erat dengan kelas MFC CArray
dan akan bekerja dalam proyek MFC, meskipun tanpa dukungan serialisasi.
Untuk informasi selengkapnya, lihat Kelas Koleksi ATL.
Persyaratan
Header: atlcoll.h
CAtlArray::Tambahkan
Panggil metode ini untuk menambahkan elemen ke objek array.
size_t Add(INARGTYPE element);
size_t Add();
Parameter
elemen
Elemen yang akan ditambahkan ke array.
Tampilkan Nilai
Mengembalikan indeks elemen yang ditambahkan.
Keterangan
Elemen baru ditambahkan ke akhir array. Jika tidak ada elemen yang disediakan, elemen kosong ditambahkan; artinya, array ditingkatkan ukurannya seolah-olah elemen nyata telah ditambahkan. Jika operasi gagal, AtlThrow dipanggil dengan argumen E_OUTOFMEMORY.
Contoh
// 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::Tambahkan
Panggil metode ini untuk menambahkan konten satu array ke ujung array lainnya.
size_t Append(const CAtlArray<E, ETraits>& aSrc);
Parameter
aSrc
Array yang akan ditambahkan.
Tampilkan Nilai
Mengembalikan indeks elemen pertama yang ditambahkan.
Keterangan
Elemen dalam array yang disediakan ditambahkan ke akhir array yang ada. Jika perlu, memori akan dialokasikan untuk mengakomodasi elemen baru.
Array harus dari jenis yang sama, dan tidak dimungkinkan untuk menambahkan array ke dirinya sendiri.
Dalam build debug, ATLASSERT akan dinaikkan jika CAtlArray
argumen bukan array yang valid atau jika aSrc mengacu pada objek yang sama. Dalam build rilis, argumen yang tidak valid dapat menyebabkan perilaku yang tidak dapat diprediksi.
Contoh
// 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
Panggil metode ini untuk mengonfirmasi bahwa objek array valid.
void AssertValid() const;
Keterangan
Jika objek array tidak valid, ATLASSERT akan memberikan pernyataan. Metode ini hanya tersedia jika _DEBUG ditentukan.
Contoh
CAtlArray<float> fArray;
// AssertValid only exists in debug builds
#ifdef _DEBUG
fArray.AssertValid();
#endif
CAtlArray::CAtlArray
Konstruktor.
CAtlArray() throw();
Keterangan
Menginisialisasi objek array.
Contoh
CAtlArray<int> iArray;
CAtlArray::~CAtlArray
Destruktor.
~CAtlArray() throw();
Keterangan
Mengosongkan sumber daya apa pun yang digunakan oleh objek array.
CAtlArray::Copy
Panggil metode ini untuk menyalin elemen dari satu array ke array lainnya.
void Copy(const CAtlArray<E, ETraits>& aSrc);
Parameter
aSrc
Sumber elemen untuk disalin ke array.
Keterangan
Panggil metode ini untuk menimpa elemen dari satu array dengan elemen array lain. Jika perlu, memori akan dialokasikan untuk mengakomodasi elemen baru. Tidak dimungkinkan untuk menyalin elemen array ke dirinya sendiri.
Jika konten array yang ada harus dipertahankan, gunakan CAtlArray::Tambahkan sebagai gantinya.
Dalam build debug, ATLASSERT akan dinaikkan jika objek yang ada CAtlArray
tidak valid, atau jika aSrc mengacu pada objek yang sama. Dalam build rilis, argumen yang tidak valid dapat menyebabkan perilaku yang tidak dapat diprediksi.
Catatan
CAtlArray::Copy
tidak mendukung array yang terdiri dari elemen yang dibuat dengan kelas CAutoPtr .
Contoh
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
Panggil metode ini untuk menghapus elemen kosong apa pun dari array.
void FreeExtra() throw();
Keterangan
Elemen kosong apa pun dihapus, tetapi ukuran dan batas atas array tetap tidak berubah.
Dalam build debug, ATLASSERT akan dinaikkan jika objek CAtlArray tidak valid, atau jika array akan melebihi ukuran maksimumnya.
CAtlArray::GetAt
Panggil metode ini untuk mengambil satu elemen dari objek array.
const E& GetAt(size_t iElement) const throw();
E& GetAt(size_t iElement) throw();
Parameter
iElement
Nilai indeks elemen array yang akan dikembalikan.
Tampilkan Nilai
Mengembalikan referensi ke elemen array yang diperlukan.
Keterangan
Dalam build debug, ATLASSERT akan dinaikkan jika iElement melebihi jumlah elemen dalam array. Dalam build rilis, argumen yang tidak valid dapat menyebabkan perilaku yang tidak dapat diprediksi.
Contoh
// 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
Panggil metode ini untuk mengembalikan jumlah elemen yang disimpan dalam array.
size_t GetCount() const throw();
Tampilkan Nilai
Mengembalikan jumlah elemen yang disimpan dalam array.
Keterangan
Karena elemen pertama dalam array berada di posisi 0, nilai yang dikembalikan oleh GetCount
selalu 1 lebih besar dari indeks terbesar.
Contoh
Lihat contoh untuk CAtlArray::GetAt.
CAtlArray::GetData
Panggil metode ini untuk mengembalikan penunjuk ke elemen pertama dalam array.
E* GetData() throw();
const E* GetData() const throw();
Tampilkan Nilai
Mengembalikan penunjuk ke lokasi memori yang menyimpan elemen pertama dalam array. Jika tidak ada elemen yang tersedia, NULL dikembalikan.
Contoh
// 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
Jenis data yang digunakan untuk menambahkan elemen ke array.
typedef ETraits::INARGTYPE INARGTYPE;
CAtlArray::InsertArrayAt
Panggil metode ini untuk menyisipkan satu array ke array lainnya.
void InsertArrayAt(size_t iStart, const CAtlArray<E, ETraits>* paNew);
Parameter
iStart
Indeks tempat array akan disisipkan.
paNew
Array yang akan disisipkan.
Keterangan
Elemen dari array paNew disalin ke dalam objek array, dimulai dari elemen iStart. Elemen array yang ada dipindahkan untuk menghindari ditimpa.
Dalam build debug, ATLASSERT akan dinaikkan jika CAtlArray
objek tidak valid, atau jika pointer paNew NULL atau tidak valid.
Catatan
CAtlArray::InsertArrayAt
tidak mendukung array yang terdiri dari elemen yang dibuat dengan kelas CAutoPtr .
Contoh
// 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
Panggil metode ini untuk menyisipkan elemen baru (atau beberapa salinan elemen) ke dalam objek array.
void InsertAt(size_t iElement, INARGTYPE element, size_t nCount = 1);
Parameter
iElement
Indeks tempat elemen atau elemen akan disisipkan.
elemen
Nilai elemen atau elemen yang akan disisipkan.
nCount
Jumlah elemen yang akan ditambahkan.
Keterangan
Menyisipkan satu atau beberapa elemen ke dalam array, dimulai dari iElement indeks. Elemen yang ada dipindahkan untuk menghindari ditimpa.
Dalam build debug, ATLASSERT akan dinaikkan jika CAtlArray
objek tidak valid, jumlah elemen yang akan ditambahkan adalah nol, atau jumlah gabungan elemen terlalu besar untuk dikandung array. Dalam build ritel, melewati parameter yang tidak valid dapat menyebabkan hasil yang tidak dapat diprediksi.
Contoh
// 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
Panggil metode ini untuk menguji apakah array kosong.
bool IsEmpty() const throw();
Tampilkan Nilai
Mengembalikan true jika array kosong, jika tidak salah.
Keterangan
Array dikatakan kosong jika tidak berisi elemen. Oleh karena itu, bahkan jika array berisi elemen kosong, itu tidak kosong.
Contoh
// 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 []
Panggil operator ini untuk mengembalikan referensi ke elemen dalam array.
E& operator[](size_t ielement) throw();
const E& operator[](size_t ielement) const throw();
Parameter
iElement
Nilai indeks elemen array yang akan dikembalikan.
Tampilkan Nilai
Mengembalikan referensi ke elemen array yang diperlukan.
Keterangan
Melakukan fungsi serupa dengan CAtlArray::GetAt. Tidak seperti CArray kelas MFC, operator ini tidak dapat digunakan sebagai pengganti CAtlArray::SetAt.
Dalam build debug, ATLASSERT akan dinaikkan jika iElement melebihi jumlah total elemen dalam array. Dalam build ritel, parameter yang tidak valid dapat menyebabkan hasil yang tidak dapat diprediksi.
CAtlArray::OUTARGTYPE
Jenis data yang digunakan untuk mengambil elemen dari array.
typedef ETraits::OUTARGTYPE OUTARGTYPE;
CAtlArray::RemoveAll
Panggil metode ini untuk menghapus semua elemen dari objek array.
void RemoveAll() throw();
Keterangan
Menghapus semua elemen dari objek array.
Metode ini memanggil CAtlArray::SetCount untuk mengubah ukuran array dan kemudian membebaskan memori yang dialokasikan.
Contoh
Lihat contoh untuk CAtlArray::IsEmpty.
CAtlArray::RemoveAt
Panggil metode ini untuk menghapus satu atau beberapa elemen dari array.
void RemoveAt(size_t iElement, size_t nCount = 1);
Parameter
iElement
Indeks elemen pertama yang akan dihapus.
nCount
Jumlah elemen yang akan dihapus.
Keterangan
Menghapus satu atau beberapa elemen dari array. Elemen yang tersisa digeser ke bawah. Batas atas dikurangi, tetapi memori tidak dikosongkan sampai panggilan ke CAtlArray::FreeExtra dibuat.
Dalam build debug, ATLASSERT akan dinaikkan jika CAtlArray
objek tidak valid, atau jika total gabungan iElement dan nCount melebihi jumlah total elemen dalam array. Dalam build ritel, parameter yang tidak valid dapat menyebabkan hasil yang tidak dapat diprediksi.
Contoh
// 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
Panggil metode ini untuk mengatur nilai elemen dalam objek array.
void SetAt(size_t iElement, INARGTYPE element);
Parameter
iElement
Indeks yang menunjuk ke elemen array yang akan diatur.
elemen
Nilai baru elemen yang ditentukan.
Keterangan
Dalam build debug, ATLASSERT akan dinaikkan jika iElement melebihi jumlah elemen dalam array. Dalam build ritel, parameter yang tidak valid dapat mengakibatkan hasil yang tidak dapat diprediksi.
Contoh
Lihat contoh untuk CAtlArray::GetAt.
CAtlArray::SetCount
Panggil metode ini untuk mengatur ukuran objek array.
bool SetCount(size_t nNewSize, int nGrowBy = - 1);
Parameter
nNewSize
Ukuran array yang diperlukan.
nGrowBy
Nilai yang digunakan untuk menentukan seberapa besar untuk membuat buffer. Nilai -1 menyebabkan nilai yang dihitung secara internal digunakan.
Tampilkan Nilai
Mengembalikan true jika array berhasil diubah ukurannya, false jika tidak.
Keterangan
Array dapat ditingkatkan atau dikurangi ukurannya. Jika ditingkatkan, elemen kosong tambahan ditambahkan ke array. Jika dikurangi, elemen dengan indeks terbesar akan dihapus dan memori dibebaskan.
Gunakan metode ini untuk mengatur ukuran array sebelum menggunakannya. Jika SetCount
tidak digunakan, proses penambahan elemen — dan alokasi memori berikutnya yang dilakukan — akan mengurangi performa dan memori fragmen.
Contoh
Lihat contoh untuk CAtlArray::GetData.
CAtlArray::SetAtGrow
Panggil metode ini untuk mengatur nilai elemen dalam objek array, memperluas array sesuai kebutuhan.
void SetAtGrow(size_t iElement, INARGTYPE element);
Parameter
iElement
Indeks yang menunjuk ke elemen array yang akan diatur.
elemen
Nilai baru elemen yang ditentukan.
Keterangan
Menggantikan nilai elemen yang ditujukkan oleh indeks. Jika iElement lebih besar dari ukuran array saat ini, array secara otomatis ditingkatkan menggunakan panggilan ke CAtlArray::SetCount. Dalam build debug, ATLASSERT akan dinaikkan jika CAtlArray
objek tidak valid. Dalam build ritel, parameter yang tidak valid dapat menyebabkan hasil yang tidak dapat diprediksi.
Contoh
// 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.
Lihat juga
Sampel MMXSwarm
Sampel DynamicConsumer
Sampel UpdatePV
Sampel Marquee
Kelas CArray
Gambaran Umum Kelas