Compartilhar via


Classe CRBTree

Essa classe fornece métodos para criar e utilizar uma árvore Red-Black.

Sintaxe

template <typename K,
          typename V,
          class KTraits = CElementTraits<K>,
          class VTraits = CElementTraits<V>>
class CRBTree

Parâmetros

K
O tipo de elemento key.

V
O tipo de elemento valor.

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

VTraits
O código usado para copiar ou mover elementos valor.

Membros

Typedefs públicos

Nome Descrição
CRBTree::KINARGTYPE O tipo usado quando uma chave é passada como um argumento de entrada.
CRBTree::KOUTARGTYPE O tipo usado quando uma chave é retornada como um argumento de saída.
CRBTree::VINARGTYPE O tipo usado quando um valor é passado como um argumento de entrada.
CRBTree::VOUTARGTYPE O tipo usado quando um valor é passado como um argumento de saída.

Classes públicas

Nome Descrição
CRBTree::CPair Class Uma classe que contém os elementos key e value.

Construtores públicos

Nome Descrição
CRBTree::~CRBTree O destruidor.

Métodos públicos

Nome Descrição
CRBTree::FindFirstKeyAfter Chame esse método para localizar a posição do elemento que usa a próxima chave disponível.
CRBTree::GetAt Chame esse método para obter o elemento em uma determinada posição na árvore.
CRBTree::GetCount Chame esse método para obter o número de elementos na árvore.
CRBTree::GetHeadPosition Chame esse método para obter o valor de posição do elemento no início da árvore.
CRBTree::GetKeyAt Chame esse método para obter a chave de uma determinada posição na árvore.
CRBTree::GetNext Chame esse método para obter um ponteiro para um elemento armazenado no objeto CRBTree e avance a posição para o próximo elemento.
CRBTree::GetNextAssoc Chame esse método para obter a chave e o valor de um elemento armazenado no mapa e avance a posição para o próximo elemento.
CRBTree::GetNextKey Chame esse método para obter a chave de um elemento armazenado na árvore e avance a posição para o próximo elemento.
CRBTree::GetNextValue Chame esse método para obter o valor de um elemento armazenado na árvore e avance a posição para o próximo elemento.
CRBTree::GetPrev Chame esse método para obter um ponteiro para um elemento armazenado no objeto CRBTree e atualize a posição para o elemento anterior.
CRBTree::GetTailPosition Chame esse método para obter o valor de posição do elemento no fim da árvore.
CRBTree::GetValueAt Chame esse método para recuperar o valor armazenado em uma determinada posição no objeto CRBTree.
CRBTree::IsEmpty Chame esse método para testar um objeto de árvore vazio.
CRBTree::RemoveAll Chame esse método para remover todos os elementos do objeto CRBTree.
CRBTree::RemoveAt Chame esse método para remover o elemento na posição determinada no objeto CRBTree.
CRBTree::SetValueAt Chame esse método para alterar o valor armazenado em uma determinada posição no objeto CRBTree.

Comentários

Uma árvore Red-Black é uma árvore de pesquisa binária que usa um bit extra de informações por nó para garantir que ela permaneça "equilibrada", ou seja, a altura da árvore não aumenta desproporcionalmente e afeta o desempenho.

Essa classe de modelo foi criada para ser usada por CRBMap e CRBMultiMap. A maior parte dos métodos que compõem essas classes derivadas é fornecida por CRBTree.

Para obter uma discussão mais completa sobre as várias classes de coleção e seus recursos e características de desempenho, confira Classes de coleção da ATL.

Requisitos

Cabeçalho: atlcoll.h

Classe CRBTree::CPair

Uma classe que contém os elementos key e value.

class CPair : public __POSITION

Comentários

Essa classe é usada pelos métodos CRBTree::GetAt, CRBTree::GetNext e CRBTree::GetPrev para acessar os elementos key e value armazenados na estrutura da árvore.

Os membros são os seguintes:

Membro de dados Descrição
m_key O membro de dados que armazena o elemento key.
m_value O membro de dados que armazena o elemento value.

CRBTree::~CRBTree

O destruidor.

~CRBTree() throw();

Comentários

Libera todos os recursos alocados. Chama CRBTree::RemoveAll para excluir todos os elementos.

CRBTree::FindFirstKeyAfter

Chame esse método para localizar a posição do elemento que usa a próxima chave disponível.

POSITION FindFirstKeyAfter(KINARGTYPE key) const throw();

Parâmetros

chave
Um valor de chave.

Valor de retorno

Retorna o valor da posição do elemento que usa a próxima chave disponível. Se não houver mais elementos, NULL será retornado.

Comentários

Esse método facilita a passagem da árvore sem precisar calcular valores de posição com antecedência.

CRBTree::GetAt

Chame esse método para obter o elemento em uma determinada posição na árvore.

CPair* GetAt(POSITION pos) throw();
const CPair* GetAt(POSITION pos) const throw();
void GetAt(POSITION pos, KOUTARGTYPE key, VOUTARGTYPE value) const;

Parâmetros

pos
O valor da posição.

chave
A variável que recebe a chave.

value
A variável que recebe o valor.

Valor de retorno

Os dois primeiros formatos retornam um ponteiro para um CPair. O terceiro formato obtém uma chave e um valor para a posição determinada.

Comentários

O valor da posição pode ser determinado anteriormente com uma chamada para um método como CRBTree::GetHeadPosition ou CRBTree::GetTailPosition.

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

CRBTree::GetCount

Chame esse método para obter o número de elementos na árvore.

size_t GetCount() const throw();

Valor de retorno

Retorna o número de elementos (cada par key/value é um elemento) armazenado na árvore.

CRBTree::GetHeadPosition

Chame esse método para obter o valor de posição do elemento no início da árvore.

POSITION GetHeadPosition() const throw();

Valor de retorno

Retorna o valor da posição do elemento no início da árvore.

Comentários

O valor retornado por GetHeadPosition pode ser usado com métodos como CRBTree::GetKeyAt ou CRBTree::GetNext para percorrer a árvore e recuperar valores.

CRBTree::GetKeyAt

Chame esse método para obter a chave de uma determinada posição na árvore.

const K& GetKeyAt(POSITION pos) const throw();

Parâmetros

pos
O valor da posição.

Valor de retorno

Retorna a chave armazenada na posição pos na árvore.

Comentários

Se pos não for um valor de posição válido, os resultados serão imprevisíveis. Em builds de depuração, ocorrerá uma falha de declaração se pos for igual a NULL.

CRBTree::GetNext

Chame esse método para obter um ponteiro para um elemento armazenado no objeto CRBTree e avance a posição para o próximo elemento.

const CPair* GetNext(POSITION& pos) const throw();
CPair* GetNext(POSITION& pos) throw();

Parâmetros

pos
O contador de posição, retornado por uma chamada anterior a métodos como CRBTree::GetHeadPosition ou CRBTree::FindFirstKeyAfter.

Valor de retorno

Retorna um ponteiro para o próximo valor CPair na árvore.

Comentários

O contador de posição pos é atualizado após cada chamada. Se o elemento recuperado for o último na árvore, pos será definido como NULL.

CRBTree::GetNextAssoc

Chame esse método para obter a chave e o valor de um elemento armazenado no mapa e avance a posição para o próximo elemento.

void GetNextAssoc(
    POSITION& pos,
    KOUTARGTYPE key,
    VOUTARGTYPE value) const;

Parâmetros

pos
O contador de posição, retornado por uma chamada anterior a métodos como CRBTree::GetHeadPosition ou CRBTree::FindFirstKeyAfter.

chave
Parâmetro de modelo que especifica o tipo da chave da árvore.

value
Parâmetro de modelo que especifica o tipo do valor da árvore.

Comentários

O contador de posição pos é atualizado após cada chamada. Se o elemento recuperado for o último na árvore, pos será definido como NULL.

CRBTree::GetNextKey

Chame esse método para obter a chave de um elemento armazenado na árvore e avance a posição para o próximo elemento.

const K& GetNextKey(POSITION& pos) const throw();

Parâmetros

pos
O contador de posição, retornado por uma chamada anterior a métodos como CRBTree::GetHeadPosition ou CRBTree::FindFirstKeyAfter.

Valor de retorno

Retorna uma referência à próxima chave na árvore.

Comentários

Atualiza o contador de posição atual, pos. Se não houver mais entradas na árvore, o contador de posição será definido como NULL.

CRBTree::GetNextValue

Chame esse método para obter o valor de um elemento armazenado na árvore e avance a posição para o próximo elemento.

const V& GetNextValue(POSITION& pos) const throw();
V& GetNextValue(POSITION& pos) throw();

Parâmetros

pos
O contador de posição, retornado por uma chamada anterior a métodos como CRBTree::GetHeadPosition ou CRBTree::FindFirstKeyAfter.

Valor de retorno

Retorna uma referência ao próximo valor na árvore.

Comentários

Atualiza o contador de posição atual, pos. Se não houver mais entradas na árvore, o contador de posição será definido como NULL.

CRBTree::GetPrev

Chame esse método para obter um ponteiro para um elemento armazenado no objeto CRBTree e atualize a posição para o elemento anterior.

const CPair* GetPrev(POSITION& pos) const throw();
CPair* GetPrev(POSITION& pos) throw();

Parâmetros

pos
O contador de posição, retornado por uma chamada anterior a métodos como CRBTree::GetHeadPosition ou CRBTree::FindFirstKeyAfter.

Valor de retorno

Retorna um ponteiro para o valor CPair anterior armazenado na árvore.

Comentários

Atualiza o contador de posição atual, pos. Se não houver mais entradas na árvore, o contador de posição será definido como NULL.

CRBTree::GetTailPosition

Chame esse método para obter o valor de posição do elemento no fim da árvore.

POSITION GetTailPosition() const throw();

Valor de retorno

Retorna o valor da posição do elemento no fim da árvore.

Comentários

O valor retornado por GetTailPosition pode ser usado com métodos como CRBTree::GetKeyAt ou CRBTree::GetPrev para percorrer a árvore e recuperar valores.

CRBTree::GetValueAt

Chame esse método para recuperar o valor armazenado em uma determinada posição no objeto CRBTree.

const V& GetValueAt(POSITION pos) const throw();
V& GetValueAt(POSITION pos) throw();

Parâmetros

pos
O contador de posição, retornado por uma chamada anterior a métodos como CRBTree::GetHeadPosition ou CRBTree::FindFirstKeyAfter.

Valor de retorno

Retorna uma referência ao valor armazenado na posição determinada no objeto CRBTree.

CRBTree::IsEmpty

Chame esse método para testar um objeto de árvore vazio.

bool IsEmpty() const throw();

Valor de retorno

Retornará TRUE se a árvore estiver vazia. Caso contrário, FALSE.

CRBTree::KINARGTYPE

O tipo usado quando uma chave é passada como um argumento de entrada.

typedef KTraits::INARGTYPE KINARGTYPE;

CRBTree::KOUTARGTYPE

O tipo usado quando uma chave é retornada como um argumento de saída.

typedef KTraits::OUTARGTYPE KOUTARGTYPE;

CRBTree::RemoveAll

Chame esse método para remover todos os elementos do objeto CRBTree.

void RemoveAll() throw();

Comentários

Limpa o objeto CRBTree, liberando a memória usada para armazenar os elementos.

CRBTree::RemoveAt

Chame esse método para remover o elemento na posição determinada no objeto CRBTree.

void RemoveAt(POSITION pos) throw();

Parâmetros

pos
O contador de posição, retornado por uma chamada anterior a métodos como CRBTree::GetHeadPosition ou CRBTree::FindFirstKeyAfter.

Comentários

Remove o par key/value armazenado na posição especificada. A memória usada para armazenar o elemento é liberada. A POSIÇÃO referenciada por pos torna-se inválida e, embora a POSIÇÃO de outros elementos na árvore permaneça válida, eles não necessariamente mantêm a mesma ordem.

CRBTree::SetValueAt

Chame esse método para alterar o valor armazenado em uma determinada posição no objeto CRBTree.

void SetValueAt(POSITION pos, VINARGTYPE value);

Parâmetros

pos
O contador de posição, retornado por uma chamada anterior a métodos como CRBTree::GetHeadPosition ou CRBTree::FindFirstKeyAfter.

value
O valor a ser adicionado ao objeto CRBTree.

Comentários

Altera o elemento de valor armazenado na posição determinada no objeto CRBTree.

CRBTree::VINARGTYPE

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

typedef VTraits::INARGTYPE VINARGTYPE;

CRBTree::VOUTARGTYPE

O tipo usado quando um valor é passado como um argumento de saída.

typedef VTraits::OUTARGTYPE VOUTARGTYPE;

Confira também

Visão geral da aula