CObList
Kelas
Mendukung daftar pointer nonunique CObject
yang diurutkan yang dapat diakses secara berurutan atau berdasarkan nilai pointer.
Sintaks
class CObList : public CObject
Anggota
Konstruktor Publik
Nama | Deskripsi |
---|---|
CObList::CObList |
Membuat daftar kosong untuk CObject penunjuk. |
Metode Publik
Nama | Deskripsi |
---|---|
CObList::AddHead |
Menambahkan elemen (atau semua elemen dalam daftar lain) ke kepala daftar (membuat kepala baru). |
CObList::AddTail |
Menambahkan elemen (atau semua elemen dalam daftar lain) ke ekor daftar (membuat ekor baru). |
CObList::Find |
Mendapatkan posisi elemen yang ditentukan oleh nilai penunjuk. |
CObList::FindIndex |
Mendapatkan posisi elemen yang ditentukan oleh indeks berbasis nol. |
CObList::GetAt |
Mendapatkan elemen pada posisi tertentu. |
CObList::GetCount |
Mengembalikan jumlah elemen dalam daftar ini. |
CObList::GetHead |
Mengembalikan elemen kepala daftar (tidak boleh kosong). |
CObList::GetHeadPosition |
Mengembalikan posisi elemen kepala daftar. |
CObList::GetNext |
Mendapatkan elemen berikutnya untuk iterasi. |
CObList::GetPrev |
Mendapatkan elemen sebelumnya untuk iterasi. |
CObList::GetSize |
Mengembalikan jumlah elemen dalam daftar ini. |
CObList::GetTail |
Mengembalikan elemen ekor daftar (tidak boleh kosong). |
CObList::GetTailPosition |
Mengembalikan posisi elemen ekor daftar. |
CObList::InsertAfter |
Menyisipkan elemen baru setelah posisi tertentu. |
CObList::InsertBefore |
Menyisipkan elemen baru sebelum posisi tertentu. |
CObList::IsEmpty |
Pengujian untuk kondisi daftar kosong (tanpa elemen). |
CObList::RemoveAll |
Menghapus semua elemen dari daftar ini. |
CObList::RemoveAt |
Menghapus elemen dari daftar ini, yang ditentukan oleh posisi. |
CObList::RemoveHead |
Menghapus elemen dari kepala daftar. |
CObList::RemoveTail |
Menghapus elemen dari ekor daftar. |
CObList::SetAt |
Mengatur elemen pada posisi tertentu. |
Keterangan
CObList
mencantumkan perilaku seperti daftar yang ditautkan bergantian.
Variabel jenis POSITION
adalah kunci untuk daftar. Anda dapat menggunakan POSITION
variabel baik sebagai iterator untuk melintasi daftar secara berurutan dan sebagai marka buku untuk menyimpan tempat. Namun, posisi tidak sama dengan indeks.
Penyisipan elemen sangat cepat di kepala daftar, di ekor, dan pada yang diketahui POSITION
. Pencarian berurutan diperlukan untuk mencari elemen berdasarkan nilai atau indeks. Pencarian ini bisa lambat jika daftar panjang.
CObList
menggabungkan IMPLEMENT_SERIAL
makro untuk mendukung serialisasi dan pembuangan elemennya. Jika daftar CObject
pointer disimpan ke arsip, baik dengan operator penyisipan yang kelebihan beban atau dengan Serialize
fungsi anggota, setiap CObject
elemen diserialisasikan pada gilirannya.
Jika Anda memerlukan cadangan elemen individual CObject
dalam daftar, Anda harus mengatur kedalaman konteks cadangan ke 1 atau lebih besar.
CObList
Saat objek dihapus, atau ketika elemennya dihapus, hanya CObject
penunjuk yang dihapus, bukan objek yang mereka referensikan.
Anda dapat memperoleh kelas Anda sendiri dari CObList
. Kelas daftar baru Anda, yang dirancang untuk menahan pointer ke objek yang berasal dari CObject
, menambahkan anggota data baru dan fungsi anggota baru. Perhatikan bahwa daftar yang dihasilkan tidak benar-benar mengetik dengan aman, karena memungkinkan penyisipan pointer apa pun CObject
.
Catatan
Anda harus menggunakan IMPLEMENT_SERIAL
makro dalam implementasi kelas turunan Anda jika Anda ingin membuat serial daftar.
Untuk informasi selengkapnya tentang menggunakan CObList
, lihat artikel Koleksi.
Hierarki Warisan
CObList
Persyaratan
Header: afxcoll.h
CObList::AddHead
Menambahkan elemen atau daftar elemen baru ke kepala daftar ini.
POSITION AddHead(CObject* newElement);
void AddHead(CObList* pNewList);
Parameter
newElement
Penunjuk CObject
yang akan ditambahkan ke daftar ini.
pNewList
Penunjuk ke daftar lain CObList
. Elemen di pNewList
akan ditambahkan ke daftar ini.
Tampilkan Nilai
Versi pertama mengembalikan POSITION
nilai elemen yang baru disisipkan.
Tabel berikut ini memperlihatkan fungsi anggota lain yang mirip CObList::AddHead
dengan .
Kelas | Fungsi Anggota |
---|---|
CPtrList |
POSITION AddHead( void * newElement ); void AddHead( CPtrList * pNewList ); |
CStringList |
POSITION AddHead(const CString& newElement ); POSITION AddHead(LPCTSTR newElement ); void AddHead(CStringList * pNewList ); |
Keterangan
Daftar dapat kosong sebelum operasi.
Contoh
Lihat CObList::CObList
untuk daftar CAge
kelas.
CObList list;
list.AddHead(new CAge(21)); // 21 is now at head.
list.AddHead(new CAge(40)); // 40 replaces 21 at head.
#ifdef _DEBUG
afxDump.SetDepth(1);
afxDump << _T("AddHead example: ") << &list << _T("\n");
#endif
Hasil dari program ini adalah sebagai berikut:
AddHead example: A CObList with 2 elements
a CAge at $44A8 40
a CAge at $442A 21
CObList::AddTail
Menambahkan elemen atau daftar elemen baru ke ekor daftar ini.
POSITION AddTail(CObject* newElement);
void AddTail(CObList* pNewList);
Parameter
newElement
Penunjuk CObject
yang akan ditambahkan ke daftar ini.
pNewList
Penunjuk ke daftar lain CObList
. Elemen di pNewList
akan ditambahkan ke daftar ini.
Tampilkan Nilai
Versi pertama mengembalikan POSITION
nilai elemen yang baru disisipkan.
Keterangan
Daftar dapat kosong sebelum operasi.
Tabel berikut ini memperlihatkan fungsi anggota lain yang mirip CObList::AddTail
dengan .
Kelas | Fungsi Anggota |
---|---|
CPtrList |
POSITION AddTail( void * newElement ); void AddTail( CPtrList * pNewList ); |
CStringList |
POSITION AddTail( const CString& newElement ); POSITION AddTail( LPCTSTR newElement ); void AddTail( CStringList * pNewList ); |
Contoh
Lihat CObList::CObList
untuk daftar CAge
kelas.
CObList list;
list.AddTail(new CAge(21));
list.AddTail(new CAge(40)); // List now contains (21, 40).
#ifdef _DEBUG
afxDump.SetDepth(1);
afxDump << _T("AddTail example: ") << &list << _T("\n");
#endif
Hasil dari program ini adalah sebagai berikut:
AddTail example: A CObList with 2 elements
a CAge at $444A 21
a CAge at $4526 40
CObList::CObList
Membuat daftar pointer kosong CObject
.
CObList(INT_PTR nBlockSize = 10);
Parameter
nBlockSize
Granularitas alokasi memori untuk memperluas daftar.
Keterangan
Seiring bertambahnya daftar, memori dialokasikan dalam satuan nBlockSize
entri. Jika alokasi memori gagal, akan CMemoryException
dilemparkan.
Tabel berikut ini memperlihatkan fungsi anggota lain yang mirip CObList::CObList
dengan .
Kelas | Fungsi Anggota |
---|---|
CPtrList |
CPtrList( INT_PTR nBlockSize = 10 ); |
CStringList |
CStringList( INT_PTR nBlockSize = 10 ); |
Contoh
Di bawah ini adalah daftar CObject
kelas CAge
-turunan yang digunakan dalam semua contoh koleksi:
// Simple CObject-derived class for CObList and other examples
class CAge : public CObject
{
DECLARE_SERIAL(CAge)
private:
int m_years;
public:
CAge() { m_years = 0; }
CAge(int age) { m_years = age; }
CAge(const CAge& a) { m_years = a.m_years; } // Copy constructor
void Serialize(CArchive& ar);
void AssertValid() const;
const CAge& operator=(const CAge& a)
{
m_years = a.m_years; return *this;
}
BOOL operator==(CAge a)
{
return m_years == a.m_years;
}
#ifdef _DEBUG
void Dump(CDumpContext& dc) const
{
CObject::Dump(dc);
dc << m_years;
}
#endif
};
Di bawah ini adalah contoh CObList
penggunaan konstruktor:
CObList list(20); // List on the stack with blocksize = 20.
CObList* plist = new CObList; // List on the heap with default
// blocksize.
CObList::Find
Mencari daftar secara berurutan untuk menemukan penunjuk pertama CObject
yang cocok dengan penunjuk yang ditentukan CObject
.
POSITION Find(
CObject* searchValue,
POSITION startAfter = NULL) const;
Parameter
searchValue
Penunjuk objek yang akan ditemukan dalam daftar ini.
startAfter
Posisi awal untuk pencarian.
Tampilkan Nilai
POSITION
Nilai yang dapat digunakan untuk perulangan atau pengambilan penunjuk objek; NULL
jika objek tidak ditemukan.
Keterangan
Perhatikan bahwa nilai pointer dibandingkan, bukan konten objek.
Tabel berikut ini memperlihatkan fungsi anggota lain yang mirip CObList::Find
dengan .
Kelas | Fungsi Anggota |
---|---|
CPtrList |
POSITION Find( void *searchValue , POSITION startAfter = NULL ) const; |
CStringList |
POSITION Find( LPCTSTR searchValue , POSITION startAfter = NULL ) const; |
Contoh
Lihat CObList::CObList
untuk daftar CAge
kelas.
CObList list;
CAge* pa1;
CAge* pa2;
POSITION pos;
list.AddHead(pa1 = new CAge(21));
list.AddHead(pa2 = new CAge(40)); // List now contains (40, 21).
if ((pos = list.Find(pa1)) != NULL) // Hunt for pa1
{ // starting at head by default.
ASSERT(*(CAge*)list.GetAt(pos) == CAge(21));
}
CObList::FindIndex
Menggunakan nilai nIndex
sebagai indeks ke dalam daftar.
POSITION FindIndex(INT_PTR nIndex) const;
Parameter
nIndex
Indeks berbasis nol dari elemen daftar yang akan ditemukan.
Tampilkan Nilai
POSITION
Nilai yang dapat digunakan untuk perulangan atau pengambilan penunjuk objek; NULL
jika nIndex
terlalu besar. (Kerangka kerja menghasilkan pernyataan jika nIndex
negatif.)
Keterangan
Ini memulai pemindaian berurutan dari kepala daftar, berhenti pada elemen nth.
Tabel berikut ini memperlihatkan fungsi anggota lain yang mirip CObList::FindIndex
dengan .
Kelas | Fungsi Anggota |
---|---|
CPtrList |
POSITION FindIndex( INT_PTR nIndex ) const; |
CStringList |
POSITION FindIndex( INT_PTR nIndex ) const; |
Contoh
Lihat CObList::CObList
untuk daftar CAge
kelas.
CObList list;
POSITION pos;
list.AddHead(new CAge(21));
list.AddHead(new CAge(40)); // List now contains (40, 21).
if ((pos = list.FindIndex(0)) != NULL)
{
ASSERT(*(CAge*)list.GetAt(pos) == CAge(40));
}
CObList::GetAt
Variabel jenis POSITION
adalah kunci untuk daftar.
CObject*& GetAt(POSITION position);
const CObject*& GetAt(POSITION position) const;
Parameter
position
POSITION
Nilai yang dikembalikan oleh panggilan fungsi sebelumnya GetHeadPosition
atau Find
anggota.
Tampilkan Nilai
Lihat deskripsi nilai pengembalian untuk GetHead
.
Keterangan
Ini tidak sama dengan indeks, dan Anda tidak dapat beroperasi pada POSITION
nilai sendiri. GetAt
mengambil pointer yang CObject
terkait dengan posisi tertentu.
Anda harus memastikan bahwa nilai Anda POSITION
mewakili posisi yang valid dalam daftar. Jika tidak valid, maka versi Debug Pustaka Kelas Microsoft Foundation menegaskan.
Tabel berikut ini memperlihatkan fungsi anggota lain yang mirip CObList::GetAt
dengan .
Kelas | Fungsi Anggota |
---|---|
CPtrList |
const void*& GetAt( POSITION position ) const; void*& GetAt( POSITION position ); |
CStringList |
const CString& GetAt( POSITION position ) const; CString& GetAt( POSITION position ); |
Contoh
Lihat contoh untuk FindIndex
.
CObList::GetCount
Mendapatkan jumlah elemen dalam daftar ini.
INT_PTR GetCount() const;
Tampilkan Nilai
Nilai bilangan bulat yang berisi jumlah elemen.
Tabel berikut ini memperlihatkan fungsi anggota lain yang mirip CObList::GetCount
dengan .
Kelas | Fungsi Anggota |
---|---|
CPtrList |
INT_PTR GetCount( ) const; |
CStringList |
INT_PTR GetCount( ) const; |
Contoh
Lihat CObList::CObList
untuk daftar CAge
kelas.
CObList list;
list.AddHead(new CAge(21));
list.AddHead(new CAge(40)); // List now contains (40, 21).
ASSERT(list.GetCount() == 2);
CObList::GetHead
Mendapatkan penunjuk CObject
yang mewakili elemen kepala daftar ini.
CObject*& GetHead();
const CObject*& GetHead() const;
Tampilkan Nilai
Jika daftar diakses melalui penunjuk ke const CObList
, maka GetHead
mengembalikan CObject
penunjuk. Ini memungkinkan fungsi hanya digunakan di sisi kanan pernyataan penugasan dan dengan demikian melindungi daftar dari modifikasi.
Jika daftar diakses secara langsung atau melalui penunjuk ke CObList
, maka GetHead
mengembalikan referensi ke CObject
penunjuk. Ini memungkinkan fungsi untuk digunakan di salah satu sisi pernyataan penugasan dan dengan demikian memungkinkan entri daftar untuk dimodifikasi.
Keterangan
Anda harus memastikan bahwa daftar tidak kosong sebelum memanggil GetHead
. Jika daftar kosong, maka versi Debug dari Microsoft Foundation Class Library menegaskan. Gunakan IsEmpty
untuk memverifikasi bahwa daftar berisi elemen.
Tabel berikut ini memperlihatkan fungsi anggota lain yang mirip CObList::GetHead
dengan .
Kelas | Fungsi Anggota |
---|---|
CPtrList |
const void*& GetHead( ) const; void*& GetHead( ); |
CStringList |
const CString& GetHead( ) const; CString& GetHead( ); |
Contoh
Lihat CObList::CObList
untuk daftar CAge
kelas.
Contoh berikut mengilustrasikan penggunaan GetHead
di sisi kiri pernyataan penugasan.
const CObList* cplist;
CObList* plist = new CObList;
CAge* page1 = new CAge(21);
CAge* page2 = new CAge(30);
CAge* page3 = new CAge(40);
plist->AddHead(page1);
plist->AddHead(page2); // List now contains (30, 21).
// The following statement REPLACES the head element.
plist->GetHead() = page3; // List now contains (40, 21).
ASSERT(*(CAge*)plist->GetHead() == CAge(40));
cplist = plist; // cplist is a pointer to a const list.
// cplist->GetHead() = page3; // Error: can't assign a pointer to a const list
ASSERT(*(CAge*)plist->GetHead() == CAge(40)); // OK
delete page1;
delete page2;
delete page3;
delete plist; // Cleans up memory.
CObList::GetHeadPosition
Mendapatkan posisi elemen kepala dari daftar ini.
POSITION GetHeadPosition() const;
Tampilkan Nilai
Nilai POSITION
yang dapat digunakan untuk perulangan atau pengambilan penunjuk objek; NULL
jika daftar kosong.
Tabel berikut ini memperlihatkan fungsi anggota lain yang mirip CObList::GetHeadPosition
dengan .
Kelas | Fungsi Anggota |
---|---|
CPtrList |
POSITION GetHeadPosition( ) const; |
CStringList |
POSITION GetHeadPosition( ) const; |
Contoh
Lihat CObList::CObList
untuk daftar CAge
kelas.
CObList list;
POSITION pos;
list.AddHead(new CAge(21));
list.AddHead(new CAge(40)); // List now contains (40, 21).
if ((pos = list.GetHeadPosition()) != NULL)
{
ASSERT(*(CAge*)list.GetAt(pos) == CAge(40));
}
CObList::GetNext
Mendapatkan elemen daftar yang diidentifikasi oleh rPosition
, lalu diatur rPosition
ke POSITION
nilai entri berikutnya dalam daftar.
CObject*& GetNext(POSITION& rPosition);
const CObject* GetNext(POSITION& rPosition) const;
Parameter
rPosition
Referensi ke nilai yang POSITION
dikembalikan oleh panggilan fungsi anggota sebelumnya GetNext
, GetHeadPosition
, atau lainnya.
Tampilkan Nilai
Lihat deskripsi nilai pengembalian untuk GetHead
.
Keterangan
Anda dapat menggunakan GetNext
dalam perulangan perulangan penerusan jika Anda membuat posisi awal dengan panggilan ke GetHeadPosition
atau Find
.
Anda harus memastikan bahwa nilai Anda POSITION
mewakili posisi yang valid dalam daftar. Jika tidak valid, maka versi Debug Pustaka Kelas Microsoft Foundation menegaskan.
Jika elemen yang diambil adalah yang terakhir dalam daftar, maka nilai rPosition
baru diatur ke NULL
.
Dimungkinkan untuk menghapus elemen selama iterasi. Lihat contoh untuk RemoveAt
.
Catatan
Pada MFC 8.0 versi const metode ini telah berubah menjadi kembali const CObject*
alih-alih const CObject*&
. Perubahan ini dilakukan untuk membuat pengkompilasi sesuai dengan standar C++.
Tabel berikut ini memperlihatkan fungsi anggota lain yang mirip CObList::GetNext
dengan .
Kelas | Fungsi Anggota |
---|---|
CPtrList |
void*& GetNext( POSITION& rPosition ); const void* GetNext( POSITION& rPosition ) const; |
CStringList |
CString& GetNext( POSITION& rPosition ); const CString& GetNext( POSITION& rPosition ) const; |
Contoh
Lihat CObList::CObList
untuk daftar CAge
kelas.
CObList list;
POSITION pos;
list.AddHead(new CAge(21));
list.AddHead(new CAge(40)); // List now contains (40, 21).
// Iterate through the list in head-to-tail order.
#ifdef _DEBUG
for (pos = list.GetHeadPosition(); pos != NULL;)
{
afxDump << list.GetNext(pos) << _T("\n");
}
#endif
Hasil dari program ini adalah sebagai berikut:
a CAge at $479C 40
a CAge at $46C0 21
CObList::GetPrev
Mendapatkan elemen daftar yang diidentifikasi oleh rPosition
, lalu diatur rPosition
ke POSITION
nilai entri sebelumnya dalam daftar.
CObject*& GetPrev(POSITION& rPosition);
const CObject* GetPrev(POSITION& rPosition) const;
Parameter
rPosition
Referensi ke nilai yang POSITION
dikembalikan oleh panggilan fungsi anggota sebelumnya GetPrev
atau lainnya.
Tampilkan Nilai
Lihat deskripsi nilai pengembalian untuk GetHead
.
Keterangan
Anda dapat menggunakan GetPrev
dalam perulangan perulangan terbalik jika Anda menetapkan posisi awal dengan panggilan ke GetTailPosition
atau Find
.
Anda harus memastikan bahwa nilai Anda POSITION
mewakili posisi yang valid dalam daftar. Jika tidak valid, maka versi Debug Pustaka Kelas Microsoft Foundation menegaskan.
Jika elemen yang diambil adalah yang pertama dalam daftar, maka nilai rPosition
baru diatur ke NULL
.
Catatan
Pada MFC 8.0 versi const metode ini telah berubah menjadi kembali const CObject*
alih-alih const CObject*&
. Perubahan ini dilakukan untuk membuat pengkompilasi sesuai dengan standar C++.
Tabel berikut ini memperlihatkan fungsi anggota lain yang mirip CObList::GetPrev
dengan .
Kelas | Fungsi Anggota |
---|---|
CPtrList |
void*& GetPrev( POSITION& rPosition ); const void* GetPrev( POSITION& rPosition ) const; |
CStringList |
CString& GetPrev( POSITION& rPosition ); const CString& GetPrev( POSITION& rPosition ) const; |
Contoh
Lihat CObList::CObList
untuk daftar CAge
kelas.
CObList list;
POSITION pos;
list.AddHead(new CAge(21));
list.AddHead(new CAge(40)); // List now contains (40, 21).
// Iterate through the list in tail-to-head order.
for (pos = list.GetTailPosition(); pos != NULL;)
{
#ifdef _DEBUG
afxDump << list.GetPrev(pos) << _T("\n");
#endif
}
Hasil dari program ini adalah sebagai berikut:
a CAge at $421C 21
a CAge at $421C 40
CObList::GetSize
Mengembalikan jumlah elemen daftar.
INT_PTR GetSize() const;
Tampilkan Nilai
Jumlah item dalam daftar.
Keterangan
Panggil metode ini untuk mengambil jumlah elemen dalam daftar.
Tabel berikut ini memperlihatkan fungsi anggota lain yang mirip CObList::GetSize
dengan .
Kelas | Fungsi Anggota |
---|---|
CPtrList |
INT_PTR GetSize( ) const; |
CStringList |
INT_PTR GetSize( ) const; |
Contoh
Lihat CObList::CObList
untuk daftar CAge
kelas.
CObList list;
list.AddHead(new CAge(21));
list.AddHead(new CAge(40)); // List now contains (40, 21).
ASSERT(list.GetSize() == 2);
CObList::GetTail
Mendapatkan penunjuk CObject
yang mewakili elemen ekor daftar ini.
CObject*& GetTail();
const CObject*& GetTail() const;
Tampilkan Nilai
Lihat deskripsi nilai pengembalian untuk GetHead
.
Keterangan
Anda harus memastikan bahwa daftar tidak kosong sebelum memanggil GetTail
. Jika daftar kosong, maka versi Debug dari Microsoft Foundation Class Library menegaskan. Gunakan IsEmpty
untuk memverifikasi bahwa daftar berisi elemen.
Tabel berikut ini memperlihatkan fungsi anggota lain yang mirip CObList::GetTail
dengan .
Kelas | Fungsi Anggota |
---|---|
CPtrList |
const void*& GetTail( ) const; void*& GetTail( ); |
CStringList |
const CString& GetTail( ) const; CString& GetTail( ); |
Contoh
Lihat CObList::CObList
untuk daftar CAge
kelas.
CObList list;
list.AddHead(new CAge(21));
list.AddHead(new CAge(40)); // List now contains (40, 21).
ASSERT(*(CAge*)list.GetTail() == CAge(21));
CObList::GetTailPosition
Mendapatkan posisi elemen ekor dari daftar ini; NULL
jika daftar kosong.
POSITION GetTailPosition() const;
Tampilkan Nilai
Nilai POSITION
yang dapat digunakan untuk perulangan atau pengambilan penunjuk objek; NULL
jika daftar kosong.
Tabel berikut ini memperlihatkan fungsi anggota lain yang mirip CObList::GetTailPosition
dengan .
Kelas | Fungsi Anggota |
---|---|
CPtrList |
POSITION GetTailPosition( ) const; |
CStringList |
POSITION GetTailPosition( ) const; |
Contoh
Lihat CObList::CObList
untuk daftar CAge
kelas.
CObList list;
POSITION pos;
list.AddHead(new CAge(21));
list.AddHead(new CAge(40)); // List now contains (40, 21).
if ((pos = list.GetTailPosition()) != NULL)
{
ASSERT(*(CAge*) list.GetAt(pos) == CAge(21));
}
CObList::InsertAfter
Menambahkan elemen ke daftar ini setelah elemen pada posisi yang ditentukan.
POSITION InsertAfter(
POSITION position,
CObject* newElement);
Parameter
position
POSITION
Nilai yang dikembalikan oleh panggilan fungsi anggota , , GetPrev
atau Find
sebelumnyaGetNext
.
newElement
Penunjuk objek yang akan ditambahkan ke daftar ini.
Tabel berikut ini memperlihatkan fungsi anggota lain yang mirip CObList::InsertAfter
dengan .
Kelas | Fungsi Anggota |
---|---|
CPtrList |
POSITION InsertAfter( POSITION position , void * newElement ); |
CStringList |
POSITION InsertAfter( POSITION position , const CString& newElement ); POSITION InsertAfter( POSITION position , LPCTSTR newElement ); |
Tampilkan Nilai
Nilai POSITION
yang sama position
dengan parameter .
Contoh
Lihat CObList::CObList
untuk daftar CAge
kelas.
CObList list;
POSITION pos1, pos2;
list.AddHead(new CAge(21));
list.AddHead(new CAge(40)); // List now contains (40, 21).
if ((pos1 = list.GetHeadPosition()) != NULL)
{
pos2 = list.InsertAfter(pos1, new CAge(65));
}
#ifdef _DEBUG
afxDump.SetDepth(1);
afxDump << _T("InsertAfter example: ") << &list << _T("\n");
#endif
Hasil dari program ini adalah sebagai berikut:
InsertAfter example: A CObList with 3 elements
a CAge at $4A44 40
a CAge at $4A64 65
a CAge at $4968 21
CObList::InsertBefore
Menambahkan elemen ke daftar ini sebelum elemen pada posisi yang ditentukan.
POSITION InsertBefore(
POSITION position,
CObject* newElement);
Parameter
position
POSITION
Nilai yang dikembalikan oleh panggilan fungsi anggota , , GetPrev
atau Find
sebelumnyaGetNext
.
newElement
Penunjuk objek yang akan ditambahkan ke daftar ini.
Tampilkan Nilai
Nilai POSITION
yang dapat digunakan untuk perulangan atau pengambilan penunjuk objek; NULL
jika daftar kosong.
Tabel berikut ini memperlihatkan fungsi anggota lain yang mirip CObList::InsertBefore
dengan .
Kelas | Fungsi Anggota |
---|---|
CPtrList |
POSITION InsertBefore( POSITION position , void * newElement ); |
CStringList |
POSITION InsertBefore( POSITION position , const CString& newElement ); POSITION InsertBefore( POSITION position , LPCTSTR newElement ); |
Contoh
Lihat CObList::CObList
untuk daftar CAge
kelas.
CObList list;
POSITION pos1, pos2;
list.AddHead(new CAge(21));
list.AddHead(new CAge(40)); // List now contains (40, 21).
if ((pos1 = list.GetTailPosition()) != NULL)
{
pos2 = list.InsertBefore(pos1, new CAge(65));
}
#ifdef _DEBUG
afxDump.SetDepth(1);
afxDump << _T("InsertBefore example: ") << &list << _T("\n");
#endif
Hasil dari program ini adalah sebagai berikut:
InsertBefore example: A CObList with 3 elements
a CAge at $4AE2 40
a CAge at $4B02 65
a CAge at $49E6 21
CObList::IsEmpty
Menunjukkan apakah daftar ini tidak berisi elemen.
BOOL IsEmpty() const;
Tampilkan Nilai
Bukan nol jika daftar ini kosong; jika tidak, 0.
Tabel berikut ini memperlihatkan fungsi anggota lain yang mirip CObList::IsEmpty
dengan .
Kelas | Fungsi Anggota |
---|---|
CPtrList |
BOOL IsEmpty( ) const; |
CStringList |
BOOL IsEmpty( ) const; |
Contoh
Lihat contoh untuk RemoveAll
.
CObList::RemoveAll
Menghapus semua elemen dari daftar ini dan membebaskan memori terkait CObList
.
void RemoveAll();
Keterangan
Tidak ada kesalahan yang dihasilkan jika daftar sudah kosong.
Saat Anda menghapus elemen dari CObList
, Anda menghapus penunjuk objek dari daftar. Anda bertanggung jawab untuk menghapus objek itu sendiri.
Tabel berikut ini memperlihatkan fungsi anggota lain yang mirip CObList::RemoveAll
dengan .
Kelas | Fungsi Anggota |
---|---|
CPtrList |
void RemoveAll( ); |
CStringList |
void RemoveAll( ); |
Contoh
Lihat CObList::CObList
untuk daftar CAge
kelas.
CObList list;
CAge* pa1;
CAge* pa2;
ASSERT(list.IsEmpty()); // Yes it is.
list.AddHead(pa1 = new CAge(21));
list.AddHead(pa2 = new CAge(40)); // List now contains (40, 21).
ASSERT(!list.IsEmpty()); // No it isn't.
list.RemoveAll(); // CAges aren't destroyed.
ASSERT(list.IsEmpty()); // Yes it is.
delete pa1; // Now delete the CAge objects.
delete pa2;
CObList::RemoveAt
Menghapus elemen yang ditentukan dari daftar ini.
void RemoveAt(POSITION position);
Parameter
position
Posisi elemen yang akan dihapus dari daftar.
Keterangan
Saat Anda menghapus elemen dari CObList
, Anda menghapus penunjuk objek dari daftar. Anda bertanggung jawab untuk menghapus objek itu sendiri.
Anda harus memastikan bahwa nilai Anda POSITION
mewakili posisi yang valid dalam daftar. Jika tidak valid, maka versi Debug Pustaka Kelas Microsoft Foundation menegaskan.
Tabel berikut ini memperlihatkan fungsi anggota lain yang mirip CObList::RemoveAt
dengan .
Kelas | Fungsi Anggota |
---|---|
CPtrList |
void RemoveAt( POSITION position ); |
CStringList |
void RemoveAt( POSITION position ); |
Contoh
Berhati-hatilah saat menghapus elemen selama perulangan daftar. Contoh berikut menunjukkan teknik penghapusan yang menjamin nilai yang valid POSITION
untuk GetNext
.
Lihat CObList::CObList
untuk daftar CAge
kelas.
CObList list;
POSITION pos1, pos2;
CObject* pa;
list.AddHead(new CAge(21));
list.AddHead(new CAge(40));
list.AddHead(new CAge(65)); // List now contains (65 40, 21).
for (pos1 = list.GetHeadPosition(); (pos2 = pos1) != NULL;)
{
if (*(CAge*)list.GetNext(pos1) == CAge(40))
{
pa = list.GetAt(pos2); // Save the old pointer for
//deletion.
list.RemoveAt(pos2);
delete pa; // Deletion avoids memory leak.
}
}
#ifdef _DEBUG
afxDump.SetDepth(1);
afxDump << _T("RemoveAt example: ") << &list << _T("\n");
#endif
Hasil dari program ini adalah sebagai berikut:
RemoveAt example: A CObList with 2 elements
a CAge at $4C1E 65
a CAge at $4B22 21
CObList::RemoveHead
Menghapus elemen dari kepala daftar dan mengembalikan pointer ke dalamnya.
CObject* RemoveHead();
Tampilkan Nilai
Penunjuk CObject
sebelumnya di kepala daftar.
Keterangan
Anda harus memastikan bahwa daftar tidak kosong sebelum memanggil RemoveHead
. Jika daftar kosong, maka versi Debug dari Microsoft Foundation Class Library menegaskan. Gunakan IsEmpty
untuk memverifikasi bahwa daftar berisi elemen.
Tabel berikut ini memperlihatkan fungsi anggota lain yang mirip CObList::RemoveHead
dengan .
Kelas | Fungsi Anggota |
---|---|
CPtrList |
void* RemoveHead( ); |
CStringList |
CString RemoveHead( ); |
Contoh
Lihat CObList::CObList
untuk daftar CAge
kelas.
CObList list;
CAge* pa1;
CAge* pa2;
list.AddHead(pa1 = new CAge(21));
list.AddHead(pa2 = new CAge(40)); // List now contains (40, 21).
ASSERT(*(CAge*)list.RemoveHead() == CAge(40)); // Old head
ASSERT(*(CAge*)list.GetHead() == CAge(21)); // New head
delete pa1;
delete pa2;
CObList::RemoveTail
Menghapus elemen dari ekor daftar dan mengembalikan penunjuk ke dalamnya.
CObject* RemoveTail();
Tampilkan Nilai
Penunjuk ke objek yang berada di ekor daftar.
Keterangan
Anda harus memastikan bahwa daftar tidak kosong sebelum memanggil RemoveTail
. Jika daftar kosong, maka versi Debug dari Microsoft Foundation Class Library menegaskan. Gunakan IsEmpty
untuk memverifikasi bahwa daftar berisi elemen.
Tabel berikut ini memperlihatkan fungsi anggota lain yang mirip CObList::RemoveTail
dengan .
Kelas | Fungsi Anggota |
---|---|
CPtrList |
void* RemoveTail( ); |
CStringList |
CString RemoveTail( ); |
Contoh
Lihat CObList::CObList
untuk daftar CAge
kelas.
CObList list;
CAge* pa1;
CAge* pa2;
list.AddHead(pa1 = new CAge(21));
list.AddHead(pa2 = new CAge(40)); // List now contains (40, 21).
ASSERT(*(CAge*)list.RemoveTail() == CAge(21)); // Old tail
ASSERT(*(CAge*)list.GetTail() == CAge(40)); // New tail
delete pa1;
delete pa2; // Clean up memory.
CObList::SetAt
Mengatur elemen pada posisi tertentu.
void SetAt(
POSITION pos,
CObject* newElement);
Parameter
pos
Elemen POSITION
yang akan diatur.
newElement
Penunjuk CObject
yang akan ditulis ke daftar.
Keterangan
Variabel jenis POSITION
adalah kunci untuk daftar. Ini tidak sama dengan indeks, dan Anda tidak dapat beroperasi pada POSITION
nilai sendiri. SetAt
menulis penunjuk CObject
ke posisi yang ditentukan dalam daftar.
Anda harus memastikan bahwa nilai Anda POSITION
mewakili posisi yang valid dalam daftar. Jika tidak valid, maka versi Debug Pustaka Kelas Microsoft Foundation menegaskan.
Tabel berikut ini memperlihatkan fungsi anggota lain yang mirip CObList::SetAt
dengan .
Kelas | Fungsi Anggota |
---|---|
CPtrList |
void SetAt( POSITION pos , const CString& newElement ); |
CStringList |
void SetAt( POSITION pos , LPCTSTR newElement ); |
Contoh
Lihat CObList::CObList
untuk daftar CAge
kelas.
CObList list;
CObject* pa;
POSITION pos;
list.AddHead(new CAge(21));
list.AddHead(new CAge(40)); // List now contains (40, 21).
if ((pos = list.GetTailPosition()) != NULL)
{
pa = list.GetAt(pos); // Save the old pointer for
//deletion.
list.SetAt(pos, new CAge(65)); // Replace the tail
//element.
delete pa; // Deletion avoids memory leak.
}
#ifdef _DEBUG
afxDump.SetDepth(1);
afxDump << _T("SetAt example: ") << &list << _T("\n");
#endif
Hasil dari program ini adalah sebagai berikut:
SetAt example: A CObList with 2 elements
a CAge at $4D98 40
a CAge at $4DB8 65
Lihat juga
CObject
Kelas
Bagan Hierarki
CStringList
Kelas
CPtrList
Kelas