Compartilhar via


Classe CAtlList

Essa classe fornece métodos para criar e gerenciar um objeto de lista.

Sintaxe

template<typename E, class ETraits = CElementTraits<E>>
class CAtlList

Parâmetros

E
O tipo de elemento.

ETraits
O código usado para copiar ou mover elementos. Confira a classe CElementTraits para obter mais detalhes.

Membros

Typedefs públicos

Nome Descrição
CAtlList::INARGTYPE

Construtores públicos

Nome Descrição
CAtlList::CAtlList O construtor .
CAtlList::~CAtlList O destruidor.

Métodos públicos

Nome Descrição
CAtlList::AddHead Chame esse método para adicionar um elemento ao início da lista.
CAtlList::AddHeadList Chame esse método para adicionar uma lista existente ao início da lista.
CAtlList::AddTail Chame esse método para adicionar um elemento ao final dessa lista.
CAtlList::AddTailList Chame esse método para adicionar uma lista existente ao final dessa lista.
CAtlList::AssertValid Chame este método para confirmar que a lista é válida.
CAtlList::Find Chame esse método para pesquisar o elemento especificado na lista.
CAtlList::FindIndex Chame esse método para obter a posição de um elemento, dado um valor de índice.
CAtlList::GetAt Chame esse método para retornar o elemento a uma posição especificada na lista.
CAtlList::GetCount Chame esse método para retornar o número de objetos na lista.
CAtlList::GetHead Chame esse método para retornar o elemento ao início da lista.
CAtlList::GetHeadPosition Chame esse método para obter a posição do início da lista.
CAtlList::GetNext Chame esse método para retornar o próximo elemento da lista.
CAtlList::GetPrev Chame esse método para retornar o elemento anterior da lista.
CAtlList::GetTail Chame esse método para retornar o elemento ao final da lista.
CAtlList::GetTailPosition Chame esse método para obter a posição do final da lista.
CAtlList::InsertAfter Chame esse método para inserir um novo elemento na lista após a posição especificada.
CAtlList::InsertBefore Chame esse método para inserir um novo elemento na lista antes da posição especificada.
CAtlList::IsEmpty Chame este método para determinar se a lista está vazia.
CAtlList::MoveToHead Chame esse método para mover o elemento especificado para o início da lista.
CAtlList::MoveToTail Chame esse método para mover o elemento especificado para o final da lista.
CAtlList::RemoveAll Chame esse método para remover todos os elementos da lista.
CAtlList::RemoveAt Chame esse método para remover um único elemento da lista.
CAtlList::RemoveHead Chame esse método para remover o elemento no início da lista.
CAtlList::RemoveHeadNoReturn Chame esse método para remover o elemento do início da lista sem retornar um valor.
CAtlList::RemoveTail Chame esse método para remover o elemento no final da lista.
CAtlList::RemoveTailNoReturn Chame esse método para remover o elemento do final da lista sem retornar um valor.
CAtlList::SetAt Chame esse método para definir o valor do elemento em uma determinada posição na lista.
CAtlList::SwapElements Chame esse método para trocar elementos na lista.

Comentários

A classe CAtlList dá suporte a listas ordenadas de objetos não exclusivos acessíveis sequencialmente ou por valor. Listas CAtlList se comportam como listas vinculadas duplamente. Cada lista tem um início e um final, e novos elementos (ou listas em alguns casos) podem ser adicionados ao final da lista ou inseridos antes ou depois de elementos específicos.

A maioria dos métodos CAtlList usa um valor de posição. Esse valor é usado pelos métodos para referenciar o local de memória real em que os elementos são armazenados e não devem ser calculados ou previstos diretamente. Se for necessário acessar o nº elemento na lista, o método CAtlList::FindIndex retornará o valor de posição correspondente para um determinado índice. Os métodos CAtlList::GetNext e CAtlList::GetPrev podem ser usados para iterar por meio dos objetos na lista.

Para obter mais informações sobre as classes de coleção disponíveis com a ATL, confira Classes de coleção ATL.

Requisitos

Cabeçalho: atlcoll.h

CAtlList::AddHead

Chame esse método para adicionar um elemento ao início da lista.

POSITION AddHead();
POSITION AddHead(INARGTYPE element);

Parâmetros

element
O novo elemento.

Valor de Devolução

Retorna a posição do elemento recém-adicionado.

Comentários

Se a primeira versão for usada, um elemento vazio será criado usando seu construtor padrão, em vez de seu construtor de cópia.

Exemplo

// 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

Chame esse método para adicionar uma lista existente ao início da lista.

void AddHeadList(const CAtlList<E, ETraits>* plNew);

Parâmetros

plNew
A lista a ser adicionada.

Comentários

A lista apontada por plNew é inserida no início da lista existente. Em builds de depuração, ocorrerá uma falha de declaração se plNew for igual a NULL.

Exemplo

// 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

Chame esse método para adicionar um elemento ao final dessa lista.

POSITION AddTail();
POSITION AddTail(INARGTYPE element);

Parâmetros

element
O elemento a ser adicionado.

Valor de Devolução

Retorna a POSITION do elemento recém-adicionado.

Comentários

Se a primeira versão for usada, um elemento vazio será criado usando seu construtor padrão, em vez de seu construtor de cópia. O elemento é adicionado ao final da lista e, portanto, agora se torna seu fim. Esse método pode ser usado com uma lista vazia.

Exemplo

// 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

Chame esse método para adicionar uma lista existente ao final dessa lista.

void AddTailList(const CAtlList<E, ETraits>* plNew);

Parâmetros

plNew
A lista a ser adicionada.

Comentários

A lista apontada por plNew é inserida após o último elemento (se houver) no objeto de lista. O último elemento na lista plNew, portanto, torna-se seu final. Em builds de depuração, ocorrerá uma falha de declaração se plNew for igual a NULL.

Exemplo

// 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

Chame este método para confirmar que a lista é válida.

void AssertValid() const;

Comentários

Em builds de depuração, ocorrerá uma falha de declaração se o objeto de lista não for válido. Para ser válida, uma lista vazia deve ter o início e o final apontando para NULL, e uma lista que não está vazia deve ter o início e o final apontando para endereços válidos.

Exemplo

// Define the list
CAtlList<int> myList;

// AssertValid only exists in debug builds
#ifdef _DEBUG
myList.AssertValid();
#endif   

CAtlList::CAtlList

O construtor .

CAtlList(UINT nBlockSize = 10) throw();

Parâmetros

nBlockSize
O tamanho do bloco.

Comentários

Este é o construtor do objeto CAtlList. O tamanho do bloco é uma medida da quantidade de memória alocada quando um novo elemento é necessário. Tamanhos de bloco maiores reduzem as chamadas às rotinas de alocação de memória, mas usam mais recursos.

Exemplo

// Define two lists
CAtlList<int> myList1;
CAtlList<double> myList2;   

CAtlList::~CAtlList

O destruidor.

~CAtlList() throw();

Comentários

Libera todos os recursos alocados, incluindo uma chamada para CAtlList::RemoveAll para remover todos os elementos da lista.

Em builds de depuração, ocorrerá uma falha de declaração se a lista ainda contiver alguns elementos após a chamada para RemoveAll.

CAtlList::Find

Chame esse método para pesquisar o elemento especificado na lista.

POSITION Find(INARGTYPE element, POSITION posStartAfter = NULL) const throw();

Parâmetros

element
O elemento a ser encontrado na lista.

posStartAfter
A posição inicial da pesquisa. Se nenhum valor for especificado, a pesquisa começará com o elemento inicial.

Valor de Devolução

Retorna o valor POSITION do elemento, se encontrado, caso contrário, retorna NULL.

Comentários

Em builds de depuração, ocorrerá uma falha de declaração se o objeto de lista não for válido ou se o valor posStartAfter estiver fora do intervalo.

Exemplo

// 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

Chame esse método para obter a posição de um elemento, dado um valor de índice.

POSITION FindIndex(size_t iElement) const throw();

Parâmetros

iElement
O índice baseado em zero do elemento de lista necessário.

Valor de Devolução

Retorna o valor POSITION correspondente ou NULL se iElement está fora do intervalo.

Comentários

Esse método retorna a POSITION correspondente a um determinado valor de índice, permitindo o acesso ao nº elemento na lista.

Em builds de depuração, ocorrerá uma falha de declaração se o objeto de lista não for válido.

Exemplo

// 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

Chame esse método para retornar o elemento a uma posição especificada na lista.

E& GetAt(POSITION pos) throw();
const E& GetAt(POSITION pos) const throw();

Parâmetros

pos
O valor POSITION que especifica um elemento específico.

Valor de Devolução

Uma referência ou cópia do elemento.

Comentários

Se a lista for const, GetAt retornará uma cópia do elemento. Isso permite que o método seja usado apenas no lado direito de uma instrução de atribuição e, portanto, protege a lista contra modificações.

Se a lista não for const, GetAt retornará uma referência ao elemento. Isso permite que o método seja usado em ambos os lados de uma instrução de atribuição e, portanto, permite que as entradas da lista sejam modificadas.

Em builds de depuração, ocorrerá uma falha de declaração se pos for igual a NULL.

Exemplo

Consulte o exemplo de CAtlList::FindIndex.

CAtlList::GetCount

Chame esse método para retornar o número de objetos na lista.

size_t GetCount() const throw();

Valor de Devolução

Retorna o número de elementos na lista.

Exemplo

Consulte o exemplo de CAtlList::Find.

CAtlList::GetHead

Chame esse método para retornar o elemento ao início da lista.

E& GetHead() throw();
const E& GetHead() const throw();

Valor de Devolução

Retorna uma referência ou uma cópia do elemento no início da lista.

Comentários

Se a lista é const, GetHead retorna uma cópia do elemento no início da lista. Isso permite que o método seja usado apenas no lado direito de uma instrução de atribuição e, portanto, protege a lista contra modificações.

Se a lista não é const, GetHead retorna uma referência ao elemento no início da lista. Isso permite que o método seja usado em ambos os lados de uma instrução de atribuição e, portanto, permite que as entradas da lista sejam modificadas.

Em builds de depuração, ocorrerá uma falha de declaração se o início da lista apontar para NULL.

Exemplo

Consulte o exemplo de CAtlList::AddHead.

CAtlList::GetHeadPosition

Chame esse método para obter a posição do início da lista.

POSITION GetHeadPosition() const throw();

Valor de Devolução

Retorna o valor POSITION correspondente ao elemento no início da lista.

Comentários

Se a lista estiver vazia, o valor retornado será NULL.

Exemplo

// 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

Chame esse método para retornar o próximo elemento da lista.

E& GetNext(POSITION& pos) throw();
const E& GetNext(POSITION& pos) const throw();

Parâmetros

pos
Um valor POSITION, retornado por uma chamada anterior para GetNext, CAtlList::GetHeadPosition ou outro método CAtlList.

Valor de Devolução

Se a lista é const, GetNext retorna uma cópia do próximo elemento da lista. Isso permite que o método seja usado apenas no lado direito de uma instrução de atribuição e, portanto, protege a lista contra modificações.

Se a lista não é const, GetNext retorna uma referência ao próximo elemento da lista. Isso permite que o método seja usado em ambos os lados de uma instrução de atribuição e, portanto, permite que as entradas da lista sejam modificadas.

Comentários

O contador POSITION, pos, é atualizado para apontar para o próximo elemento na lista ou NULL se não há mais elementos. Em builds de depuração, ocorrerá uma falha de declaração se pos for igual a NULL.

Exemplo

Consulte o exemplo de CAtlList::GetHeadPosition.

CAtlList::GetPrev

Chame esse método para retornar o elemento anterior da lista.

E& GetPrev(POSITION& pos) throw();
const E& GetPrev(POSITION& pos) const throw();

Parâmetros

pos
Um valor POSITION, retornado por uma chamada anterior para GetPrev, CAtlList::GetTailPosition ou outro método CAtlList.

Valor de Devolução

Se a lista é const, GetPrev retorna uma cópia de um elemento da lista. Isso permite que o método seja usado apenas no lado direito de uma instrução de atribuição e, portanto, protege a lista contra modificações.

Se a lista não é const, GetPrev retorna uma referência a um elemento da lista. Isso permite que o método seja usado em ambos os lados de uma instrução de atribuição e, portanto, permite que as entradas da lista sejam modificadas.

Comentários

O contador POSITION, pos, é atualizado para apontar para o elemento anterior na lista ou NULL se não há mais elementos. Em builds de depuração, ocorrerá uma falha de declaração se pos for igual a NULL.

Exemplo

Consulte o exemplo de CAtlList::GetTailPosition.

CAtlList::GetTail

Chame esse método para retornar o elemento ao final da lista.

E& GetTail() throw();
const E& GetTail() const throw();

Valor de Devolução

Retorna uma referência ou uma cópia do elemento no final da lista.

Comentários

Se a lista é const, GetTail retorna uma cópia do elemento no início da lista. Isso permite que o método seja usado apenas no lado direito de uma instrução de atribuição e, portanto, protege a lista contra modificações.

Se a lista não é const, GetTail retorna uma referência ao elemento no início da lista. Isso permite que o método seja usado em ambos os lados de uma instrução de atribuição e, portanto, permite que as entradas da lista sejam modificadas.

Em builds de depuração, ocorrerá uma falha de declaração se o final da lista apontar para NULL.

Exemplo

Consulte o exemplo de CAtlList::AddTail.

CAtlList::GetTailPosition

Chame esse método para obter a posição do final da lista.

POSITION GetTailPosition() const throw();

Valor de Devolução

Retorna o valor POSITION correspondente ao elemento no final da lista.

Comentários

Se a lista estiver vazia, o valor retornado será NULL.

Exemplo

// 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

O tipo usado quando um elemento é passado como um argumento de entrada.

typedef ETraits::INARGTYPE INARGTYPE;

CAtlList::InsertAfter

Chame esse método para inserir um novo elemento na lista após a posição especificada.

POSITION InsertAfter(POSITION pos, INARGTYPE element);

Parâmetros

pos
O valor POSITION após o qual o novo elemento será inserido.

element
O elemento a ser inserido.

Valor de Devolução

Retorna o valor POSITION do novo elemento.

Comentários

Em builds de depuração, ocorrerá uma falha de declaração se a lista não for válida, se a inserção falhar ou se for feita uma tentativa de inserir o elemento após o final.

Exemplo

// 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

Chame esse método para inserir um novo elemento na lista antes da posição especificada.

POSITION InsertBefore(POSITION pos, INARGTYPE element);

Parâmetros

pos
O novo elemento será inserido na lista antes desse valor POSITION.

element
O elemento a ser inserido.

Valor de Devolução

Retorna o valor POSITION do novo elemento.

Comentários

Em builds de depuração, ocorrerá uma falha de declaração se a lista não for válida, se a inserção falhar ou se for feita uma tentativa de inserir o elemento antes do início.

Exemplo

// 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

Chame este método para determinar se a lista está vazia.

bool IsEmpty() const throw();

Valor de Devolução

Retornará true se a lista não contiver nenhum objeto, caso contrário, false.

Exemplo

// 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

Chame esse método para mover o elemento especificado para o início da lista.

void MoveToHead(POSITION pos) throw();

Parâmetros

pos
O valor POSITION do elemento a ser movido.

Comentários

O elemento especificado é movido de sua posição atual para o início da lista. Em builds de depuração, ocorrerá uma falha de declaração se pos for igual a NULL.

Exemplo

// 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

Chame esse método para mover o elemento especificado para o final da lista.

void MoveToTail(POSITION pos) throw();

Parâmetros

pos
O valor POSITION do elemento a ser movido.

Comentários

O elemento especificado é movido de sua posição atual para o final da lista. Em builds de depuração, ocorrerá uma falha de declaração se pos for igual a NULL.

Exemplo

Consulte o exemplo de CAtlList::MoveToHead.

CAtlList::RemoveAll

Chame esse método para remover todos os elementos da lista.

void RemoveAll() throw();

Comentários

Esse método remove todos os elementos da lista e libera a memória alocada. Em builds de depurações, um ATLASSERT será acionado se todos os elementos não forem excluídos ou se a estrutura de lista estiver corrompida.

Exemplo

Consulte o exemplo de CAtlList::IsEmpty.

CAtlList::RemoveAt

Chame esse método para remover um único elemento da lista.

void RemoveAt(POSITION pos) throw();

Parâmetros

pos
O valor POSITION do elemento a ser removido.

Comentários

O elemento referenciado pelo pos é removido e a memória é liberada. É aceitável usar RemoveAt para remover o início ou o final da lista.

Em builds de depuração, ocorrerá uma falha de declaração se a lista não for válida ou se a remoção do elemento fizer com que a lista acesse a memória que não faz parte da estrutura de lista.

Exemplo

// 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

Chame esse método para remover o elemento no início da lista.

E RemoveHead();

Valor de Devolução

Retorna o elemento no início da lista.

Comentários

O elemento inicial é excluído da lista e a memória é liberada. Uma cópia do elemento é retornada. Em builds de depuração, ocorrerá uma falha de declaração se a lista estiver vazia.

Exemplo

// 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

Chame esse método para remover o elemento do início da lista sem retornar um valor.

void RemoveHeadNoReturn() throw();

Comentários

O elemento inicial é excluído da lista e a memória é liberada. Em builds de depuração, ocorrerá uma falha de declaração se a lista estiver vazia.

Exemplo

Consulte o exemplo de CAtlList::IsEmpty.

CAtlList::RemoveTail

Chame esse método para remover o elemento no final da lista.

E RemoveTail();

Valor de Devolução

Retorna o elemento no final início da lista.

Comentários

O elemento final é excluído da lista e a memória é liberada. Uma cópia do elemento é retornada. Em builds de depuração, ocorrerá uma falha de declaração se a lista estiver vazia.

Exemplo

// 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

Chame esse método para remover o elemento do final da lista sem retornar um valor.

void RemoveTailNoReturn() throw();

Comentários

O elemento final é excluído da lista e a memória é liberada. Em builds de depuração, ocorrerá uma falha de declaração se a lista estiver vazia.

Exemplo

Consulte o exemplo de CAtlList::IsEmpty.

CAtlList::SetAt

Chame esse método para definir o valor do elemento em uma determinada posição na lista.

void SetAt(POSITION pos, INARGTYPE element);

Parâmetros

pos
O valor POSITION correspondente ao elemento a ser alterado.

element
O novo valor do elemento.

Comentários

Substitui o valor existente por element. Em builds de depuração, ocorrerá uma falha de declaração se pos for igual a NULL.

Exemplo

// 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

Chame esse método para trocar elementos na lista.

void SwapElements(POSITION pos1, POSITION pos2) throw();

Parâmetros

pos1
O primeiro valor POSITION.

pos2
O segundo valor POSITION.

Comentários

Troca os elementos nas duas posições especificadas. Em builds de depuração, ocorrerá uma falha de declaração se o valor de position for igual a NULL.

Exemplo

// 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);   

Confira também

Classe CList
Visão geral da classe