Bagikan melalui


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

CObject

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