Класс CAtlList
Этот класс предоставляет методы для создания объекта списка и управления ими.
Синтаксис
template<typename E, class ETraits = CElementTraits<E>>
class CAtlList
Параметры
E
Тип элемента.
ETraits
Код, используемый для копирования или перемещения элементов. Дополнительные сведения см. в классе CElementTraits.
Участники
Общедоступные определения типов
Имя | Описание |
---|---|
CAtlList::INARGTYPE |
Открытые конструкторы
Имя | Описание |
---|---|
CAtlList::CAtlList | Конструктор. |
CAtlList::~CAtlList | Деструктор |
Открытые методы
Имя | Описание |
---|---|
CAtlList::AddHead | Вызовите этот метод, чтобы добавить элемент в голову списка. |
CAtlList::AddHeadList | Вызовите этот метод, чтобы добавить существующий список в голову списка. |
CAtlList::AddTail | Вызовите этот метод, чтобы добавить элемент в хвост этого списка. |
CAtlList::AddTailList | Вызовите этот метод, чтобы добавить существующий список в хвост этого списка. |
CAtlList::AssertValid | Вызовите этот метод, чтобы убедиться, что список действителен. |
CAtlList::Find | Вызовите этот метод для поиска списка для указанного элемента. |
CAtlList::FindIndex | Вызовите этот метод, чтобы получить положение элемента, заданное значением индекса. |
CAtlList::GetAt | Вызовите этот метод, чтобы вернуть элемент по заданной позиции в списке. |
CAtlList::GetCount | Вызовите этот метод, чтобы вернуть количество объектов в списке. |
CAtlList::GetHead | Вызовите этот метод, чтобы вернуть элемент в начале списка. |
CAtlList::GetHeadPosition | Вызовите этот метод, чтобы получить позицию головы списка. |
CAtlList::GetNext | Вызовите этот метод, чтобы вернуть следующий элемент из списка. |
CAtlList::GetPrev | Вызовите этот метод, чтобы вернуть предыдущий элемент из списка. |
CAtlList::GetTail | Вызовите этот метод, чтобы вернуть элемент в хвосте списка. |
CAtlList::GetTailPosition | Вызовите этот метод, чтобы получить положение хвоста списка. |
CAtlList::InsertAfter | Вызовите этот метод, чтобы вставить новый элемент в список после указанной позиции. |
CAtlList::InsertBefore | Вызовите этот метод, чтобы вставить новый элемент в список до указанной позиции. |
CAtlList::IsEmpty | Вызовите этот метод, чтобы определить, является ли список пустым. |
CAtlList::MoveToHead | Вызовите этот метод, чтобы переместить указанный элемент в голову списка. |
CAtlList::MoveToTail | Вызовите этот метод, чтобы переместить указанный элемент в хвост списка. |
CAtlList::RemoveAll | Вызовите этот метод, чтобы удалить все элементы из списка. |
CAtlList::RemoveAt | Вызовите этот метод, чтобы удалить один элемент из списка. |
CAtlList::RemoveHead | Вызовите этот метод, чтобы удалить элемент в начале списка. |
CAtlList::RemoveHeadNoReturn | Вызовите этот метод, чтобы удалить элемент в голове списка без возврата значения. |
CAtlList::RemoveTail | Вызовите этот метод, чтобы удалить элемент в хвосте списка. |
CAtlList::RemoveTailNoReturn | Вызовите этот метод, чтобы удалить элемент в хвосте списка без возврата значения. |
CAtlList::SetAt | Вызовите этот метод, чтобы задать значение элемента в заданной позиции в списке. |
CAtlList::SwapElements | Вызовите этот метод для замены элементов в списке. |
Замечания
Класс CAtlList
поддерживает упорядоченные списки неуниканных объектов, доступные последовательно или по значению. CAtlList
списки ведут себя как вдвойне связанные списки. Каждый список имеет голову и хвост, а новые элементы (или списки в некоторых случаях) можно добавить в конец списка или вставить до или после определенных элементов.
CAtlList
Большинство методов используют значение позиции. Это значение используется методами для ссылки на фактическое расположение памяти, в котором хранятся элементы, и не следует вычислять или прогнозировать напрямую. Если необходимо получить доступ к элементу nth в списке, метод CAtlList::FindIndex вернет соответствующее значение позиции для заданного индекса. Методы CAtlList::GetNext и CAtlList::GetPrev можно использовать для итерации объектов в списке.
Дополнительные сведения о классах коллекций, доступных в ATL, см. в разделе "Классы коллекций ATL".
Требования
Заголовок: atlcoll.h
CAtlList::AddHead
Вызовите этот метод, чтобы добавить элемент в голову списка.
POSITION AddHead();
POSITION AddHead(INARGTYPE element);
Параметры
элемент
Новый элемент.
Возвращаемое значение
Возвращает позицию только что добавленного элемента.
Замечания
Если используется первая версия, пустой элемент создается с помощью конструктора по умолчанию, а не конструктора копирования.
Пример
// Declare a list of integers
CAtlList<int> myList;
// Add some elements, each to the head of the list.
// As each new element is added, the previous head is
// pushed down the list.
myList.AddHead(42);
myList.AddHead(49);
// Confirm the value currently at the head of the list
ATLASSERT(myList.GetHead() == 49);
// Confirm the value currently at the tail of the list
ATLASSERT(myList.GetTail() == 42);
CAtlList::AddHeadList
Вызовите этот метод, чтобы добавить существующий список в голову списка.
void AddHeadList(const CAtlList<E, ETraits>* plNew);
Параметры
plNew
Добавляемый список.
Замечания
Список, на который указывает plNew , вставляется в начале существующего списка. В сборках отладки произойдет сбой утверждения, если plNew равно NULL.
Пример
// Define two lists of integers
CAtlList<int> myList1;
CAtlList<int> myList2;
// Fill up the first list
myList1.AddTail(1);
myList1.AddTail(2);
myList1.AddTail(3);
// Add an element to the second list
myList2.AddTail(4);
// Insert the first list into the second
myList2.AddHeadList(&myList1);
// The second list now contains:
// 1, 2, 3, 4
CAtlList::AddTail
Вызовите этот метод, чтобы добавить элемент в хвост этого списка.
POSITION AddTail();
POSITION AddTail(INARGTYPE element);
Параметры
элемент
Добавляемый элемент.
Возвращаемое значение
Возвращает позицию только что добавленного элемента.
Замечания
Если используется первая версия, пустой элемент создается с помощью конструктора по умолчанию, а не конструктора копирования. Элемент добавляется в конец списка, поэтому он становится хвостом. Этот метод можно использовать с пустым списком.
Пример
// Define the list
CAtlList<int> myList;
// Add elements to the tail
myList.AddTail(1);
myList.AddTail(2);
myList.AddTail(3);
// Confirm the current head of the list
ATLASSERT(myList.GetHead() == 1);
// Confirm the current tail of the list
ATLASSERT(myList.GetTail() == 3);
CAtlList::AddTailList
Вызовите этот метод, чтобы добавить существующий список в хвост этого списка.
void AddTailList(const CAtlList<E, ETraits>* plNew);
Параметры
plNew
Добавляемый список.
Замечания
Список, на который указывает plNew , вставляется после последнего элемента (если такового) в объекте списка. Таким образом, последний элемент в списке plNew становится хвостом. В сборках отладки произойдет сбой утверждения, если plNew равно NULL.
Пример
// Define two integer lists
CAtlList<int> myList1;
CAtlList<int> myList2;
// Fill up the first list
myList1.AddTail(1);
myList1.AddTail(2);
myList1.AddTail(3);
// Add an element to the second list
myList2.AddTail(4);
// Insert the first list into the second
myList2.AddTailList(&myList1);
// The second list now contains:
// 4, 1, 2, 3
CAtlList::AssertValid
Вызовите этот метод, чтобы убедиться, что список действителен.
void AssertValid() const;
Замечания
В отладочных сборках произойдет сбой утверждения, если объект списка недопустим. Чтобы быть допустимым, пустой список должен иметь как голову, так и хвост, указывающий на NULL, и список, который не является пустым, должен иметь как голову, так и хвост, указывающий на допустимые адреса.
Пример
// Define the list
CAtlList<int> myList;
// AssertValid only exists in debug builds
#ifdef _DEBUG
myList.AssertValid();
#endif
CAtlList::CAtlList
Конструктор.
CAtlList(UINT nBlockSize = 10) throw();
Параметры
nBlockSize
Размер блока.
Замечания
Конструктор объекта CAtlList
. Размер блока — это мера объема памяти, выделенного при необходимости нового элемента. Более крупные размеры блоков сокращают вызовы подпрограмм выделения памяти, но используют больше ресурсов.
Пример
// Define two lists
CAtlList<int> myList1;
CAtlList<double> myList2;
CAtlList::~CAtlList
Деструктор
~CAtlList() throw();
Замечания
Освобождает все выделенные ресурсы, включая вызов CAtlList::RemoveAll , чтобы удалить все элементы из списка.
В отладочных сборках произойдет сбой утверждения, если список по-прежнему содержит некоторые элементы после вызова RemoveAll
.
CAtlList::Find
Вызовите этот метод для поиска списка для указанного элемента.
POSITION Find(INARGTYPE element, POSITION posStartAfter = NULL) const throw();
Параметры
элемент
Элемент, который нужно найти в списке.
posStartAfter
Начальная позиция для поиска. Если значение не указано, поиск начинается с головного элемента.
Возвращаемое значение
Возвращает значение POSITION элемента, если найдено, в противном случае возвращает значение NULL.
Замечания
В отладочных сборках произойдет сбой утверждения, если объект списка недействителен или если значение posStartAfter выходит за пределы диапазона.
Пример
// Define the integer list
CAtlList<int> myList;
// Populate the list
myList.AddTail(100);
myList.AddTail(200);
myList.AddTail(300);
myList.AddTail(400);
// Find the '300' element in the list,
// starting from the list head.
POSITION myPos = myList.Find(300);
// Confirm that the element was found
ATLASSERT(myList.GetAt(myPos) == 300);
CAtlList::FindIndex
Вызовите этот метод, чтобы получить положение элемента, заданное значением индекса.
POSITION FindIndex(size_t iElement) const throw();
Параметры
iElement
Отсчитываемый от нуля индекс требуемого элемента списка.
Возвращаемое значение
Возвращает соответствующее значение POSITION или NULL, если iElement выходит за пределы диапазона.
Замечания
Этот метод возвращает позицию, соответствующую заданному значению индекса, позволяя получить доступ к элементу nth в списке.
В отладочных сборках произойдет сбой утверждения, если объект списка недопустим.
Пример
// Define the integer list
CAtlList<int> myList;
// Populate the list
for (int i = 0; i < 100; i++)
{
myList.AddTail(i);
}
// Iterate through the entire list
for (size_t j = 0; j < myList.GetCount(); j++)
{
size_t i = myList.GetAt(myList.FindIndex(j));
ATLASSERT(i == j);
}
CAtlList::GetAt
Вызовите этот метод, чтобы вернуть элемент по заданной позиции в списке.
E& GetAt(POSITION pos) throw();
const E& GetAt(POSITION pos) const throw();
Параметры
pos
Значение POSITION, указывающее определенный элемент.
Возвращаемое значение
Ссылка на элемент или копию.
Замечания
Если список указан const
, GetAt
возвращает копию элемента. Это позволяет использовать метод только справа от инструкции назначения и защищает список от изменения.
Если список не const
указан, GetAt
возвращает ссылку на элемент. Это позволяет использовать метод на любой стороне инструкции назначения и таким образом позволяет изменять записи списка.
В сборках отладки произойдет сбой утверждения, если pos равен NULL.
Пример
См. пример CAtlList ::FindIndex.
CAtlList::GetCount
Вызовите этот метод, чтобы вернуть количество объектов в списке.
size_t GetCount() const throw();
Возвращаемое значение
Возвращает количество элементов в списке.
Пример
См. пример CAtlList ::Find.
CAtlList::GetHead
Вызовите этот метод, чтобы вернуть элемент в начале списка.
E& GetHead() throw();
const E& GetHead() const throw();
Возвращаемое значение
Возвращает ссылку на элемент или копию элемента в начале списка.
Замечания
Если список указан const
, GetHead
возвращает копию элемента в начале списка. Это позволяет использовать метод только справа от инструкции назначения и защищает список от изменения.
Если список не const
указан, GetHead
возвращает ссылку на элемент в начале списка. Это позволяет использовать метод на любой стороне инструкции назначения и таким образом позволяет изменять записи списка.
При отладке сборки произойдет сбой утверждения, если головка списка указывает на NULL.
Пример
См. пример CAtlList ::AddHead.
CAtlList::GetHeadPosition
Вызовите этот метод, чтобы получить позицию головы списка.
POSITION GetHeadPosition() const throw();
Возвращаемое значение
Возвращает значение POSITION, соответствующее элементу в начале списка.
Замечания
Если список пуст, возвращаемое значение равно NULL.
Пример
// Define the integer list
CAtlList<int> myList;
int i;
// Populate the list
for (i = 0; i < 100; i++)
{
myList.AddTail(i);
}
// Get the starting position value
POSITION myPos = myList.GetHeadPosition();
// Iterate through the entire list
i = 0;
int j;
do {
j = myList.GetNext(myPos);
ATLASSERT(i == j);
i++;
} while (myPos != NULL);
CAtlList::GetNext
Вызовите этот метод, чтобы вернуть следующий элемент из списка.
E& GetNext(POSITION& pos) throw();
const E& GetNext(POSITION& pos) const throw();
Параметры
pos
Значение POSITION, возвращаемое предыдущим вызовом GetNext
, CAtlList::GetHeadPosition или другим CAtlList
методом.
Возвращаемое значение
Если список указан const
, GetNext
возвращает копию следующего элемента списка. Это позволяет использовать метод только справа от инструкции назначения и защищает список от изменения.
Если список не const
указан, GetNext
возвращает ссылку на следующий элемент списка. Это позволяет использовать метод на любой стороне инструкции назначения и таким образом позволяет изменять записи списка.
Замечания
Счетчик POSITION, pos, обновляется, чтобы указать следующий элемент в списке или NULL, если нет дополнительных элементов. В сборках отладки произойдет сбой утверждения, если pos равен NULL.
Пример
См. пример CAtlList ::GetHeadPosition.
CAtlList::GetPrev
Вызовите этот метод, чтобы вернуть предыдущий элемент из списка.
E& GetPrev(POSITION& pos) throw();
const E& GetPrev(POSITION& pos) const throw();
Параметры
pos
Значение POSITION, возвращаемое предыдущим вызовом GetPrev
, CAtlList::GetTailPosition или другим CAtlList
методом.
Возвращаемое значение
Если список указан const
, GetPrev
возвращает копию элемента списка. Это позволяет использовать метод только справа от инструкции назначения и защищает список от изменения.
Если список не const
указан, GetPrev
возвращает ссылку на элемент списка. Это позволяет использовать метод на любой стороне инструкции назначения и таким образом позволяет изменять записи списка.
Замечания
Счетчик POSITION, pos, обновляется, чтобы указать предыдущий элемент в списке или NULL, если нет дополнительных элементов. В сборках отладки произойдет сбой утверждения, если pos равен NULL.
Пример
См. пример CAtlList ::GetTailPosition.
CAtlList::GetTail
Вызовите этот метод, чтобы вернуть элемент в хвосте списка.
E& GetTail() throw();
const E& GetTail() const throw();
Возвращаемое значение
Возвращает ссылку на элемент или копию элемента в хвосте списка.
Замечания
Если список указан const
, GetTail
возвращает копию элемента в начале списка. Это позволяет использовать метод только справа от инструкции назначения и защищает список от изменения.
Если список не const
указан, GetTail
возвращает ссылку на элемент в начале списка. Это позволяет использовать метод на любой стороне инструкции назначения и таким образом позволяет изменять записи списка.
В сборках отладки происходит сбой утверждения, если хвост списка указывает на NULL.
Пример
См. пример CAtlList ::AddTail.
CAtlList::GetTailPosition
Вызовите этот метод, чтобы получить положение хвоста списка.
POSITION GetTailPosition() const throw();
Возвращаемое значение
Возвращает значение POSITION, соответствующее элементу в хвосте списка.
Замечания
Если список пуст, возвращаемое значение равно NULL.
Пример
// Define the integer list
CAtlList<int> myList;
int i;
// Populate the list
for (i = 0; i < 100; i++)
{
myList.AddHead(i);
}
// Get the starting position value
POSITION myP = myList.GetTailPosition();
// Iterate through the entire list
i = 0;
int j;
do {
j = myList.GetPrev(myP);
ATLASSERT(i == j);
i++;
} while (myP != NULL);
CAtlList::INARGTYPE
Тип, используемый при передаче элемента в качестве входного аргумента.
typedef ETraits::INARGTYPE INARGTYPE;
CAtlList::InsertAfter
Вызовите этот метод, чтобы вставить новый элемент в список после указанной позиции.
POSITION InsertAfter(POSITION pos, INARGTYPE element);
Параметры
pos
Значение POSITION, после которого будет вставлен новый элемент.
элемент
Элемент, который необходимо вставить.
Возвращаемое значение
Возвращает значение POSITION нового элемента.
Замечания
В сборках отладки произойдет сбой утверждения, если список недействителен, если вставка завершается ошибкой, или если попытка вставить элемент после хвоста.
Пример
// Define the integer list
CAtlList<int> myList;
// Populate the list
POSITION myPos = myList.AddHead(1);
myPos = myList.InsertAfter(myPos, 2);
myPos = myList.InsertAfter(myPos, 3);
// Confirm the tail value is as expected
ATLASSERT(myList.GetTail() == 3);
CAtlList::InsertBefore
Вызовите этот метод, чтобы вставить новый элемент в список до указанной позиции.
POSITION InsertBefore(POSITION pos, INARGTYPE element);
Параметры
pos
Новый элемент будет вставлен в список до этого значения POSITION.
элемент
Элемент, который необходимо вставить.
Возвращаемое значение
Возвращает значение POSITION нового элемента.
Замечания
В отладочных сборках произойдет сбой утверждения, если список недействителен, если вставка завершается ошибкой, или если попытка вставить элемент перед головой.
Пример
// Define the integer list
CAtlList<int> myList;
// Populate the list
POSITION myPos = myList.AddHead(1);
myPos = myList.InsertBefore(myPos, 2);
myPos = myList.InsertBefore(myPos, 3);
// Confirm the head value is as expected
ATLASSERT(myList.GetHead() == 3);
CAtlList::IsEmpty
Вызовите этот метод, чтобы определить, является ли список пустым.
bool IsEmpty() const throw();
Возвращаемое значение
Возвращает значение true, если список не содержит объектов, в противном случае — значение false.
Пример
// Define the integer list
CAtlList<int> myList;
// Populate the list
myList.AddTail(1);
myList.AddTail(2);
myList.AddTail(3);
myList.AddTail(4);
// Confirm not empty
ATLASSERT(myList.IsEmpty() == false);
// Remove the tail element
myList.RemoveTailNoReturn();
// Confirm not empty
ATLASSERT(myList.IsEmpty() == false);
// Remove the head element
myList.RemoveHeadNoReturn();
// Confirm not empty
ATLASSERT(myList.IsEmpty() == false);
// Remove all remaining elements
myList.RemoveAll();
// Confirm empty
ATLASSERT(myList.IsEmpty() == true);
CAtlList::MoveToHead
Вызовите этот метод, чтобы переместить указанный элемент в голову списка.
void MoveToHead(POSITION pos) throw();
Параметры
pos
Значение POSITION элемента для перемещения.
Замечания
Указанный элемент перемещается из текущей позиции в голову списка. В сборках отладки произойдет сбой утверждения, если pos равен NULL.
Пример
// Define the integer list
CAtlList<int> myList;
// Populate the list
myList.AddTail(1);
myList.AddTail(2);
myList.AddTail(3);
myList.AddTail(4);
// Move the tail element to the head
myList.MoveToHead(myList.GetTailPosition());
// Confirm the head is as expected
ATLASSERT(myList.GetHead() == 4);
// Move the head element to the tail
myList.MoveToTail(myList.GetHeadPosition());
// Confirm the tail is as expected
ATLASSERT(myList.GetTail() == 4);
CAtlList::MoveToTail
Вызовите этот метод, чтобы переместить указанный элемент в хвост списка.
void MoveToTail(POSITION pos) throw();
Параметры
pos
Значение POSITION элемента для перемещения.
Замечания
Указанный элемент перемещается из текущей позиции в хвост списка. В сборках отладки произойдет сбой утверждения, если pos равен NULL.
Пример
См. пример CAtlList ::MoveToHead.
CAtlList::RemoveAll
Вызовите этот метод, чтобы удалить все элементы из списка.
void RemoveAll() throw();
Замечания
Этот метод удаляет все элементы из списка и освобождает выделенную память. В сборках отладки будет возникать функция ATLASSERT, если все элементы не удаляются или если структура списка повреждена.
Пример
См. пример CAtlList ::IsEmpty.
CAtlList::RemoveAt
Вызовите этот метод, чтобы удалить один элемент из списка.
void RemoveAt(POSITION pos) throw();
Параметры
pos
Значение POSITION элемента, которое нужно удалить.
Замечания
Элемент, на который ссылается pos, удаляется, а память освобождается. Можно использовать для RemoveAt
удаления головы или хвоста списка.
В сборках отладки произойдет сбой утверждения, если список недействителен или при удалении элемента приводит к тому, что список обращается к памяти, которая не является частью структуры списка.
Пример
// Define the integer list
CAtlList<int> myList;
// Populate the list
myList.AddTail(100);
myList.AddTail(200);
myList.AddTail(300);
// Use RemoveAt to remove elements one by one
myList.RemoveAt(myList.Find(100));
myList.RemoveAt(myList.Find(200));
myList.RemoveAt(myList.Find(300));
// Confirm all have been deleted
ATLASSERT(myList.IsEmpty() == true);
CAtlList::RemoveHead
Вызовите этот метод, чтобы удалить элемент в начале списка.
E RemoveHead();
Возвращаемое значение
Возвращает элемент в начале списка.
Замечания
Головной элемент удаляется из списка, а память освобождается. Возвращается копия элемента. В отладочных сборках произойдет сбой утверждения, если список пуст.
Пример
// Define the integer list
CAtlList<int> myList;
// Populate the list
myList.AddTail(100);
myList.AddTail(200);
myList.AddTail(300);
// Confirm the head of the list
ATLASSERT(myList.GetHead() == 100);
// Remove the head of the list
ATLASSERT(myList.RemoveHead() == 100);
// Confirm the new head of the list
ATLASSERT(myList.GetHead() == 200);
CAtlList::RemoveHeadNoReturn
Вызовите этот метод, чтобы удалить элемент в голове списка без возврата значения.
void RemoveHeadNoReturn() throw();
Замечания
Головной элемент удаляется из списка, а память освобождается. В отладочных сборках произойдет сбой утверждения, если список пуст.
Пример
См. пример CAtlList ::IsEmpty.
CAtlList::RemoveTail
Вызовите этот метод, чтобы удалить элемент в хвосте списка.
E RemoveTail();
Возвращаемое значение
Возвращает элемент в хвосте списка.
Замечания
Хвостовой элемент удаляется из списка, а память освобождается. Возвращается копия элемента. В отладочных сборках произойдет сбой утверждения, если список пуст.
Пример
// Define the integer list
CAtlList<int> myList;
// Populate the list
myList.AddTail(100);
myList.AddTail(200);
myList.AddTail(300);
// Confirm the tail of the list
ATLASSERT(myList.GetTail() == 300);
// Remove the tail of the list
ATLASSERT(myList.RemoveTail() == 300);
// Confirm the new tail of the list
ATLASSERT(myList.GetTail() == 200);
CAtlList::RemoveTailNoReturn
Вызовите этот метод, чтобы удалить элемент в хвосте списка без возврата значения.
void RemoveTailNoReturn() throw();
Замечания
Хвостовой элемент удаляется из списка, а память освобождается. В отладочных сборках произойдет сбой утверждения, если список пуст.
Пример
См. пример CAtlList ::IsEmpty.
CAtlList::SetAt
Вызовите этот метод, чтобы задать значение элемента в заданной позиции в списке.
void SetAt(POSITION pos, INARGTYPE element);
Параметры
pos
Значение POSITION, соответствующее элементу для изменения.
элемент
Новое значение элемента.
Замечания
Заменяет существующее значение элементом. В сборках отладки произойдет сбой утверждения, если pos равен NULL.
Пример
// Define the integer list
CAtlList<int> myList;
// Populate the list
myList.AddTail(100);
myList.AddTail(200);
// Use SetAt to change the values stored in the head and
// tail of the list
myList.SetAt(myList.GetHeadPosition(), myList.GetHead() * 10);
myList.SetAt(myList.GetTailPosition(), myList.GetTail() * 10);
// Confirm the values
ATLASSERT(myList.GetHead() == 1000);
ATLASSERT(myList.GetTail() == 2000);
CAtlList::SwapElements
Вызовите этот метод для замены элементов в списке.
void SwapElements(POSITION pos1, POSITION pos2) throw();
Параметры
pos1
Первое значение POSITION.
pos2
Второе значение POSITION.
Замечания
Переключает элементы в указанных двух позициях. В сборках отладки произойдет сбой утверждения, если любое положение равно NULL.
Пример
// Define the integer list
CAtlList<int> myList;
// Populate the list
for (int i = 0; i < 100; i++)
{
myList.AddHead(i);
}
// Order is: 99, 98, 97, 96...
ATLASSERT(myList.GetHead() == 99);
ATLASSERT(myList.GetTail() == 0);
// Perform a crude bubble sort
for (int j = 0; j < 100; j++)
{
for(int i = 0; i < 99; i++)
{
if (myList.GetAt(myList.FindIndex(i)) >
myList.GetAt(myList.FindIndex(i+1)))
{
myList.SwapElements(myList.FindIndex(i), myList.FindIndex(i+1));
}
}
}
// Order is: 0, 1, 2, 3...
ATLASSERT(myList.GetHead() == 0);
ATLASSERT(myList.GetTail() == 99);