Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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::AddHeaddengan .
| 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::AddTaildengan .
| 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::CObListdengan .
| Kelas | Fungsi Anggota |
|---|---|
CPtrList |
CPtrList( INT_PTR nBlockSize = 10 ); |
CStringList |
CStringList( INT_PTR nBlockSize = 10 ); |
Contoh
Di bawah ini adalah daftar CObjectkelas 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::Finddengan .
| 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::FindIndexdengan .
| 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::GetAtdengan .
| 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::GetCountdengan .
| 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::GetHeaddengan .
| 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::GetHeadPositiondengan .
| 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::GetNextdengan .
| 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::GetPrevdengan .
| 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::GetSizedengan .
| 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::GetTaildengan .
| 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::GetTailPositiondengan .
| 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 , , GetPrevatau Find sebelumnyaGetNext.
newElement
Penunjuk objek yang akan ditambahkan ke daftar ini.
Tabel berikut ini memperlihatkan fungsi anggota lain yang mirip CObList::InsertAfterdengan .
| 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 , , GetPrevatau 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::InsertBeforedengan .
| 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::IsEmptydengan .
| 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::RemoveAlldengan .
| 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::RemoveAtdengan .
| 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::RemoveHeaddengan .
| 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::RemoveTaildengan .
| 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::SetAtdengan .
| 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