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