Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Класс
Поддерживает упорядоченные списки неуникальных CObject указателей, доступные последовательно или по значению указателя.
Синтаксис
class CObList : public CObject
Участники
Открытые конструкторы
| Имя | Описание |
|---|---|
CObList::CObList |
Создает пустой список для CObject указателей. |
Открытые методы
| Имя | Описание |
|---|---|
CObList::AddHead |
Добавляет элемент (или все элементы в другом списке) в голову списка (делает новую голову). |
CObList::AddTail |
Добавляет элемент (или все элементы в другом списке) в хвост списка (делает новый хвост). |
CObList::Find |
Возвращает позицию элемента, указанного значением указателя. |
CObList::FindIndex |
Возвращает позицию элемента, заданного отсчитываемым от нуля индексом. |
CObList::GetAt |
Возвращает элемент в заданной позиции. |
CObList::GetCount |
Возвращает количество элементов в этом списке. |
CObList::GetHead |
Возвращает головной элемент списка (не может быть пустым). |
CObList::GetHeadPosition |
Возвращает позицию головного элемента списка. |
CObList::GetNext |
Возвращает следующий элемент для итерации. |
CObList::GetPrev |
Возвращает предыдущий элемент для итерации. |
CObList::GetSize |
Возвращает количество элементов в этом списке. |
CObList::GetTail |
Возвращает хвостовой элемент списка (не может быть пустым). |
CObList::GetTailPosition |
Возвращает положение хвостового элемента списка. |
CObList::InsertAfter |
Вставляет новый элемент после заданной позиции. |
CObList::InsertBefore |
Вставляет новый элемент перед заданной позицией. |
CObList::IsEmpty |
Проверяет условие пустого списка (без элементов). |
CObList::RemoveAll |
Удаляет все элементы из этого списка. |
CObList::RemoveAt |
Удаляет элемент из этого списка, указанный позицией. |
CObList::RemoveHead |
Удаляет элемент из головы списка. |
CObList::RemoveTail |
Удаляет элемент из хвоста списка. |
CObList::SetAt |
Задает элемент в заданной позиции. |
Замечания
CObList списки ведут себя как вдвойне связанные списки.
Переменная типа POSITION является ключом для списка. Вы можете использовать POSITION переменную как в качестве итератора для последовательного обхода списка, так и в качестве закладки для хранения места. Однако позиция не совпадает с индексом.
Вставка элементов очень быстра в голове списка, в хвосте и на известном POSITION. Последовательный поиск необходим для поиска элемента по значению или индексу. Этот поиск может быть медленным, если список длинный.
CObList использует макрос IMPLEMENT_SERIAL для поддержки сериализации и записи элементов в дамп. Если список CObject указателей хранится в архиве либо с перегруженным оператором вставки, либо с Serialize функцией-членом, каждый CObject элемент сериализуется в свою очередь.
Если вам нужен дамп отдельных CObject элементов в списке, необходимо задать глубину контекста дампа 1 или больше.
CObList При удалении объекта или при удалении его элементов удаляются только CObject указатели, а не объекты, на которые они ссылаются.
Вы можете наследить собственные классы.CObList Новый класс списка, предназначенный для хранения указателей на объекты, производные от CObjectобъектов, добавляет новые члены данных и новые функции-члены. Обратите внимание, что результирующий список не является строго типизированным, так как он позволяет вставлять любой CObject указатель.
Примечание.
Если планируется сериализовать список, необходимо использовать IMPLEMENT_SERIAL макрос в реализации производного класса.
Дополнительные сведения об использовании CObListсм. в статье "Коллекции".
Иерархия наследования
CObList
Требования
Заголовок: afxcoll.h
CObList::AddHead
Добавляет новый элемент или список элементов в голову этого списка.
POSITION AddHead(CObject* newElement);
void AddHead(CObList* pNewList);
Параметры
newElement
Указатель CObject , добавляемый в этот список.
pNewList
Указатель на другой CObList список. Элементы в pNewList этом списке будут добавлены.
Возвращаемое значение
Первая версия возвращает POSITION значение только что вставленного элемента.
В следующей таблице показаны другие функции-члены, которые похожи CObList::AddHeadна .
| Класс | Функция-член |
|---|---|
CPtrList |
POSITION AddHead( void * newElement );void AddHead( CPtrList * pNewList ); |
CStringList |
POSITION AddHead(const CString& newElement );POSITION AddHead(LPCTSTR newElement );void AddHead(CStringList * pNewList ); |
Замечания
Список может быть пустым перед операцией.
Пример
См CObList::CObList . описание CAge класса.
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
Результаты этой программы приведены следующим образом:
AddHead example: A CObList with 2 elements
a CAge at $44A8 40
a CAge at $442A 21
CObList::AddTail
Добавляет новый элемент или список элементов в хвост этого списка.
POSITION AddTail(CObject* newElement);
void AddTail(CObList* pNewList);
Параметры
newElement
Указатель CObject , добавляемый в этот список.
pNewList
Указатель на другой CObList список. Элементы в pNewList этом списке будут добавлены.
Возвращаемое значение
Первая версия возвращает POSITION значение только что вставленного элемента.
Замечания
Список может быть пустым перед операцией.
В следующей таблице показаны другие функции-члены, которые похожи CObList::AddTailна .
| Класс | Функция-член |
|---|---|
CPtrList |
POSITION AddTail( void * newElement );void AddTail( CPtrList * pNewList ); |
CStringList |
POSITION AddTail( const CString& newElement );POSITION AddTail( LPCTSTR newElement );void AddTail( CStringList * pNewList ); |
Пример
См CObList::CObList . описание CAge класса.
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
Результаты этой программы приведены следующим образом:
AddTail example: A CObList with 2 elements
a CAge at $444A 21
a CAge at $4526 40
CObList::CObList
Создает пустой CObject список указателей.
CObList(INT_PTR nBlockSize = 10);
Параметры
nBlockSize
Степень детализации выделения памяти для расширения списка.
Замечания
По мере роста списка память выделяется в единицах записей nBlockSize . Если выделение памяти завершается ошибкой, CMemoryException создается исключение.
В следующей таблице показаны другие функции-члены, которые похожи CObList::CObListна .
| Класс | Функция-член |
|---|---|
CPtrList |
CPtrList( INT_PTR nBlockSize = 10 ); |
CStringList |
CStringList( INT_PTR nBlockSize = 10 ); |
Пример
Ниже приведен список производного классаCAge, используемого CObjectво всех примерах коллекции:
// 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
};
Ниже приведен пример использования конструктора CObList :
CObList list(20); // List on the stack with blocksize = 20.
CObList* plist = new CObList; // List on the heap with default
// blocksize.
CObList::Find
Выполняет поиск списка последовательно, чтобы найти первый CObject указатель, соответствующий указанному CObject указателю.
POSITION Find(
CObject* searchValue,
POSITION startAfter = NULL) const;
Параметры
searchValue
Указатель объекта, который нужно найти в этом списке.
startAfter
Начальная позиция для поиска.
Возвращаемое значение
POSITION Значение, которое можно использовать для итерации или извлечения указателя объекта; NULL если объект не найден.
Замечания
Обратите внимание, что значения указателя сравниваются, а не содержимое объектов.
В следующей таблице показаны другие функции-члены, которые похожи CObList::Findна .
| Класс | Функция-член |
|---|---|
CPtrList |
POSITION Find( void *searchValue , POSITION startAfter = NULL ) const; |
CStringList |
POSITION Find( LPCTSTR searchValue , POSITION startAfter = NULL ) const; |
Пример
См CObList::CObList . описание CAge класса.
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
Использует значение nIndex в качестве индекса в списке.
POSITION FindIndex(INT_PTR nIndex) const;
Параметры
nIndex
Отсчитываемый от нуля индекс элемента списка.
Возвращаемое значение
POSITION Значение, которое можно использовать для итерации или извлечения указателя объекта; NULL если nIndex слишком большой. (Платформа создает утверждение, если nIndex отрицательно.)
Замечания
Он запускает последовательное сканирование из головы списка, остановившись на n-мэлементе.
В следующей таблице показаны другие функции-члены, которые похожи CObList::FindIndexна .
| Класс | Функция-член |
|---|---|
CPtrList |
POSITION FindIndex( INT_PTR nIndex ) const; |
CStringList |
POSITION FindIndex( INT_PTR nIndex ) const; |
Пример
См CObList::CObList . описание CAge класса.
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
Переменная типа POSITION является ключом для списка.
CObject*& GetAt(POSITION position);
const CObject*& GetAt(POSITION position) const;
Параметры
position
Значение POSITION , возвращаемое предыдущим GetHeadPosition вызовом или Find вызовом функции-члена.
Возвращаемое значение
См. описание возвращаемого значения для GetHead.
Замечания
Это не то же самое, что и индекс, и вы не можете работать с POSITION значением самостоятельно. GetAt извлекает указатель, CObject связанный с заданной позицией.
Необходимо убедиться, что значение POSITION представляет допустимую позицию в списке. Если это недопустимо, то утверждается отладочная версия библиотеки классов Microsoft Foundation.
В следующей таблице показаны другие функции-члены, которые похожи CObList::GetAtна .
| Класс | Функция-член |
|---|---|
CPtrList |
const void*& GetAt( POSITION position ) const;void*& GetAt( POSITION position ); |
CStringList |
const CString& GetAt( POSITION position ) const;CString& GetAt( POSITION position ); |
Пример
Пример см. в примере FindIndex.
CObList::GetCount
Возвращает количество элементов в этом списке.
INT_PTR GetCount() const;
Возвращаемое значение
Целочисленное значение, содержащее число элементов.
В следующей таблице показаны другие функции-члены, которые похожи CObList::GetCountна .
| Класс | Функция-член |
|---|---|
CPtrList |
INT_PTR GetCount( ) const; |
CStringList |
INT_PTR GetCount( ) const; |
Пример
См CObList::CObList . описание CAge класса.
CObList list;
list.AddHead(new CAge(21));
list.AddHead(new CAge(40)); // List now contains (40, 21).
ASSERT(list.GetCount() == 2);
CObList::GetHead
CObject Возвращает указатель, представляющий головной элемент этого списка.
CObject*& GetHead();
const CObject*& GetHead() const;
Возвращаемое значение
Если доступ к списку осуществляется с помощью указателя на объект const CObList, возвращает GetHead CObject указатель. Это позволяет использовать функцию только в правой части инструкции назначения и таким образом защищает список от изменения.
Если доступ к списку осуществляется напрямую или через указатель на объект CObList, возвращает GetHead ссылку на CObject указатель. Это позволяет использовать функцию с любой стороны инструкции назначения и таким образом позволяет изменять записи списка.
Замечания
Перед вызовом GetHeadнеобходимо убедиться, что список не пуст. Если список пуст, то утверждается отладочная версия библиотеки классов Microsoft Foundation. Используется IsEmpty для проверки того, содержит ли список элементы.
В следующей таблице показаны другие функции-члены, которые похожи CObList::GetHeadна .
| Класс | Функция-член |
|---|---|
CPtrList |
const void*& GetHead( ) const; void*& GetHead( ); |
CStringList |
const CString& GetHead( ) const; CString& GetHead( ); |
Пример
См CObList::CObList . описание CAge класса.
В следующем примере показано использование GetHead в левой части инструкции назначения.
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
Возвращает позицию головного элемента этого списка.
POSITION GetHeadPosition() const;
Возвращаемое значение
Значение POSITION , которое можно использовать для итерации или извлечения указателя объекта; NULL если список пуст.
В следующей таблице показаны другие функции-члены, которые похожи CObList::GetHeadPositionна .
| Класс | Функция-член |
|---|---|
CPtrList |
POSITION GetHeadPosition( ) const; |
CStringList |
POSITION GetHeadPosition( ) const; |
Пример
См CObList::CObList . описание CAge класса.
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
Возвращает элемент списка, определенный rPosition, а затем задает rPosition POSITION значение следующей записи в списке.
CObject*& GetNext(POSITION& rPosition);
const CObject* GetNext(POSITION& rPosition) const;
Параметры
rPosition
Ссылка на POSITION значение, GetHeadPositionвозвращаемое предыдущим GetNextили другим вызовом функции-члена.
Возвращаемое значение
См. описание возвращаемого значения для GetHead.
Замечания
Вы можете использовать GetNext в цикле итерации пересылки, если установить начальную позицию с вызовом GetHeadPosition или Find.
Необходимо убедиться, что значение POSITION представляет допустимую позицию в списке. Если это недопустимо, то утверждается отладочная версия библиотеки классов Microsoft Foundation.
Если извлеченный элемент является последним в списке, то для нового значения rPosition задано значение NULL.
Во время итерации можно удалить элемент. Пример см. в примере RemoveAt.
Примечание.
По состоянию на MFC 8.0 версия const этого метода изменилась, чтобы вернуться const CObject* вместо const CObject*&. Это изменение было внесено для обеспечения соответствия компилятора стандарту C++.
В следующей таблице показаны другие функции-члены, которые похожи CObList::GetNextна .
| Класс | Функция-член |
|---|---|
CPtrList |
void*& GetNext( POSITION& rPosition );const void* GetNext( POSITION& rPosition ) const; |
CStringList |
CString& GetNext( POSITION& rPosition );const CString& GetNext( POSITION& rPosition ) const; |
Пример
См CObList::CObList . описание CAge класса.
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
Результаты этой программы приведены следующим образом:
a CAge at $479C 40
a CAge at $46C0 21
CObList::GetPrev
Возвращает элемент списка, определенный rPosition, а затем задает rPosition POSITION значение предыдущей записи в списке.
CObject*& GetPrev(POSITION& rPosition);
const CObject* GetPrev(POSITION& rPosition) const;
Параметры
rPosition
Ссылка на POSITION значение, возвращаемое предыдущим GetPrev или другим вызовом функции-члена.
Возвращаемое значение
См. описание возвращаемого значения для GetHead.
Замечания
Можно использовать GetPrev в цикле обратной итерации, если установить начальную позицию с вызовом GetTailPosition или Find.
Необходимо убедиться, что значение POSITION представляет допустимую позицию в списке. Если это недопустимо, то утверждается отладочная версия библиотеки классов Microsoft Foundation.
Если извлеченный элемент является первым в списке, то для нового значения rPosition задано значение NULL.
Примечание.
По состоянию на MFC 8.0 версия const этого метода изменилась, чтобы вернуться const CObject* вместо const CObject*&. Это изменение было внесено для обеспечения соответствия компилятора стандарту C++.
В следующей таблице показаны другие функции-члены, которые похожи CObList::GetPrevна .
| Класс | Функция-член |
|---|---|
CPtrList |
void*& GetPrev( POSITION& rPosition );const void* GetPrev( POSITION& rPosition ) const; |
CStringList |
CString& GetPrev( POSITION& rPosition );const CString& GetPrev( POSITION& rPosition ) const; |
Пример
См CObList::CObList . описание CAge класса.
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
}
Результаты этой программы приведены следующим образом:
a CAge at $421C 21
a CAge at $421C 40
CObList::GetSize
Возвращает количество элементов списка.
INT_PTR GetSize() const;
Возвращаемое значение
Количество элементов в списке.
Замечания
Вызовите этот метод, чтобы получить количество элементов в списке.
В следующей таблице показаны другие функции-члены, которые похожи CObList::GetSizeна .
| Класс | Функция-член |
|---|---|
CPtrList |
INT_PTR GetSize( ) const; |
CStringList |
INT_PTR GetSize( ) const; |
Пример
См CObList::CObList . описание CAge класса.
CObList list;
list.AddHead(new CAge(21));
list.AddHead(new CAge(40)); // List now contains (40, 21).
ASSERT(list.GetSize() == 2);
CObList::GetTail
CObject Возвращает указатель, представляющий хвостовой элемент этого списка.
CObject*& GetTail();
const CObject*& GetTail() const;
Возвращаемое значение
См. описание возвращаемого значения для GetHead.
Замечания
Перед вызовом GetTailнеобходимо убедиться, что список не пуст. Если список пуст, то утверждается отладочная версия библиотеки классов Microsoft Foundation. Используется IsEmpty для проверки того, содержит ли список элементы.
В следующей таблице показаны другие функции-члены, которые похожи CObList::GetTailна .
| Класс | Функция-член |
|---|---|
CPtrList |
const void*& GetTail( ) const; void*& GetTail( ); |
CStringList |
const CString& GetTail( ) const; CString& GetTail( ); |
Пример
См CObList::CObList . описание CAge класса.
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
Получает позицию хвостового элемента этого списка; NULL Значение , если список пуст.
POSITION GetTailPosition() const;
Возвращаемое значение
Значение POSITION , которое можно использовать для итерации или извлечения указателя объекта; NULL если список пуст.
В следующей таблице показаны другие функции-члены, которые похожи CObList::GetTailPositionна .
| Класс | Функция-член |
|---|---|
CPtrList |
POSITION GetTailPosition( ) const; |
CStringList |
POSITION GetTailPosition( ) const; |
Пример
См CObList::CObList . описание CAge класса.
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
Добавляет элемент в этот список после элемента в указанной позиции.
POSITION InsertAfter(
POSITION position,
CObject* newElement);
Параметры
position
ЗначениеPOSITION, GetPrevвозвращаемое предыдущим GetNextвызовом функции или Find функцией-членом.
newElement
Указатель объекта, добавляемый в этот список.
В следующей таблице показаны другие функции-члены, которые похожи CObList::InsertAfterна .
| Класс | Функция-член |
|---|---|
CPtrList |
POSITION InsertAfter( POSITION position , void * newElement ); |
CStringList |
POSITION InsertAfter( POSITION position , const CString& newElement );POSITION InsertAfter( POSITION position , LPCTSTR newElement ); |
Возвращаемое значение
Значение POSITION , которое совпадает с параметром position .
Пример
См CObList::CObList . описание CAge класса.
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
Результаты этой программы приведены следующим образом:
InsertAfter example: A CObList with 3 elements
a CAge at $4A44 40
a CAge at $4A64 65
a CAge at $4968 21
CObList::InsertBefore
Добавляет элемент в список перед элементом в указанной позиции.
POSITION InsertBefore(
POSITION position,
CObject* newElement);
Параметры
position
ЗначениеPOSITION, GetPrevвозвращаемое предыдущим GetNextвызовом функции или Find функцией-членом.
newElement
Указатель объекта, добавляемый в этот список.
Возвращаемое значение
Значение POSITION , которое можно использовать для итерации или извлечения указателя объекта; NULL если список пуст.
В следующей таблице показаны другие функции-члены, которые похожи CObList::InsertBeforeна .
| Класс | Функция-член |
|---|---|
CPtrList |
POSITION InsertBefore( POSITION position , void * newElement ); |
CStringList |
POSITION InsertBefore( POSITION position , const CString& newElement );POSITION InsertBefore( POSITION position , LPCTSTR newElement ); |
Пример
См CObList::CObList . описание CAge класса.
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
Результаты этой программы приведены следующим образом:
InsertBefore example: A CObList with 3 elements
a CAge at $4AE2 40
a CAge at $4B02 65
a CAge at $49E6 21
CObList::IsEmpty
Указывает, содержит ли этот список никакие элементы.
BOOL IsEmpty() const;
Возвращаемое значение
Ненулевое значение, если этот список пуст; в противном случае — 0.
В следующей таблице показаны другие функции-члены, которые похожи CObList::IsEmptyна .
| Класс | Функция-член |
|---|---|
CPtrList |
BOOL IsEmpty( ) const; |
CStringList |
BOOL IsEmpty( ) const; |
Пример
Пример см. в примере RemoveAll.
CObList::RemoveAll
Удаляет все элементы из этого списка и освобождает связанную CObList память.
void RemoveAll();
Замечания
Ошибка не возникает, если список уже пуст.
При удалении элементов из CObListсписка удаляются указатели объектов. Вы несете ответственность за удаление самих объектов.
В следующей таблице показаны другие функции-члены, которые похожи CObList::RemoveAllна .
| Класс | Функция-член |
|---|---|
CPtrList |
void RemoveAll( ); |
CStringList |
void RemoveAll( ); |
Пример
См CObList::CObList . описание CAge класса.
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
Удаляет указанный элемент из этого списка.
void RemoveAt(POSITION position);
Параметры
position
Позиция элемента, который нужно удалить из списка.
Замечания
При удалении элемента из CObListсписка удалите указатель объекта. Вы несете ответственность за удаление самих объектов.
Необходимо убедиться, что значение POSITION представляет допустимую позицию в списке. Если это недопустимо, то утверждается отладочная версия библиотеки классов Microsoft Foundation.
В следующей таблице показаны другие функции-члены, которые похожи CObList::RemoveAtна .
| Класс | Функция-член |
|---|---|
CPtrList |
void RemoveAt( POSITION position ); |
CStringList |
void RemoveAt( POSITION position ); |
Пример
Будьте осторожны при удалении элемента во время итерации списка. В следующем примере показан метод удаления, который гарантирует допустимое POSITION значение GetNext.
См CObList::CObList . описание CAge класса.
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
Результаты этой программы приведены следующим образом:
RemoveAt example: A CObList with 2 elements
a CAge at $4C1E 65
a CAge at $4B22 21
CObList::RemoveHead
Удаляет элемент из головы списка и возвращает указатель на него.
CObject* RemoveHead();
Возвращаемое значение
Указатель CObject ранее в начале списка.
Замечания
Перед вызовом RemoveHeadнеобходимо убедиться, что список не пуст. Если список пуст, то утверждается отладочная версия библиотеки классов Microsoft Foundation. Используется IsEmpty для проверки того, содержит ли список элементы.
В следующей таблице показаны другие функции-члены, которые похожи CObList::RemoveHeadна .
| Класс | Функция-член |
|---|---|
CPtrList |
void* RemoveHead( ); |
CStringList |
CString RemoveHead( ); |
Пример
См CObList::CObList . описание CAge класса.
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
Удаляет элемент из хвоста списка и возвращает указатель на него.
CObject* RemoveTail();
Возвращаемое значение
Указатель на объект, который был в хвосте списка.
Замечания
Перед вызовом RemoveTailнеобходимо убедиться, что список не пуст. Если список пуст, то утверждается отладочная версия библиотеки классов Microsoft Foundation. Используется IsEmpty для проверки того, содержит ли список элементы.
В следующей таблице показаны другие функции-члены, которые похожи CObList::RemoveTailна .
| Класс | Функция-член |
|---|---|
CPtrList |
void* RemoveTail( ); |
CStringList |
CString RemoveTail( ); |
Пример
См CObList::CObList . описание CAge класса.
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
Задает элемент в заданной позиции.
void SetAt(
POSITION pos,
CObject* newElement);
Параметры
pos
Элемент POSITION , который нужно задать.
newElement
Указатель CObject , который необходимо записать в список.
Замечания
Переменная типа POSITION является ключом для списка. Это не то же самое, что и индекс, и вы не можете работать с POSITION значением самостоятельно. SetAt записывает CObject указатель на указанную позицию в списке.
Необходимо убедиться, что значение POSITION представляет допустимую позицию в списке. Если это недопустимо, то утверждается отладочная версия библиотеки классов Microsoft Foundation.
В следующей таблице показаны другие функции-члены, которые похожи CObList::SetAtна .
| Класс | Функция-член |
|---|---|
CPtrList |
void SetAt( POSITION pos , const CString& newElement ); |
CStringList |
void SetAt( POSITION pos , LPCTSTR newElement ); |
Пример
См CObList::CObList . описание CAge класса.
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
Результаты этой программы приведены следующим образом:
SetAt example: A CObList with 2 elements
a CAge at $4D98 40
a CAge at $4DB8 65
См. также
CObject Класс
Диаграмма иерархии
CStringList Класс
CPtrList Класс