Aleph-w  1.9
General library for algorithms and data structures
Aleph::set< T, Compare, Tree > Class Template Reference

#include <Set.H>

Public Types

typedef T value_type
 El tipo dato de los elementos del conjunto.
 
typedef set::value_typepointer
 Tipo genérico de puntero a elemento del conjunto.
 
typedef set::value_typereference
 Tipo genérico de referencia a elemento del conjunto.
 
typedef const set::value_typeconst_reference
 Tipo genérico de referencia constante a elemento del conjunto.
 
typedef size_t size_type
 Tipo numérico para los tamaños (natural).
 
typedef T key_type
 El tipo dato de los elementos del conjunto.
 

Public Member Functions

 set ()
 Constructor vacío.
 
 set (const set &c)
 Instancia una copia del conjunto c.
 
 ~set ()
 
size_type size () const
 Retorna la cantidad de elementos que contiene el conjunto.
 
bool empty () const
 Retorna true si el contenedor esta vacío.
 
bool operator== (const set &c) const
 
bool operator!= (const set &c) const
 
bool operator< (const set &c) const
 
bool operator> (const set &c) const
 
bool operator<= (const set &c) const
 
bool operator>= (const set &c) const
 
size_type count (const T &value) const
 
iterator find (const T &value) const
 
iterator lower_bound (const T &value) const
 
iterator upper_bound (const T &value) const
 
setoperator= (set &c)
 Asigna todo el contenido de c a this.
 
void swap (set &c)
 
iterator begin () const
 Retorna un iterador posicionado al primer elemento del conjunto.
 
iterator end () const
 Retorna un iterador posicionado al último elemento del conjunto.
 
std::pair< iterator, bool > insert (const T &value)
 
template<typename Itor >
 set (Itor beg, const Itor &end)
 
iterator insert (const iterator &, const T &value)
 
template<typename Itor >
void insert (Itor beg, const Itor &end)
 
size_type erase (const T &value)
 
void erase (iterator pos)
 
iterator erase (const iterator &beg, const iterator &end)
 
void clear ()
 Borra todos los elementos del conjunto.
 

Detailed Description

template<typename T, class Compare = Aleph::less<T>, template< class, class > class Tree = Treap_Rk>
class Aleph::set< T, Compare, Tree >

Implementación Aleph del tipo estándar set<T> basada en árboles binarios de búsqueda con rangos.

Esta es una implantación parcial de la clase estándar C++ set<T> basada en árboles binarios de búsqueda con rangos. Por omisión se emplea la clase Treap_Rk, con la cual en medidas de rendimiento ha probado ser más rápida que sus contrapartes gnu y Boost.

set<T> implanta un conjunto de claves de tipo T en el cual no se permiten repitencias.

Parameters
Tel tipo de dato que almacenará el conjunto.
Compareel criterio de comparación entre los elementos de tipo T. Por omisión se implanta T::operator<(const T&).
Treela clase de árbol binario de búsqueda con rangos que instrumentará el conjunto. Por omisión si usa Treap_Rk
See also
Treap_Rk map multiset multimap

Constructor & Destructor Documentation

◆ ~set()

template<typename T, class Compare = Aleph::less<T>, template< class, class > class Tree = Treap_Rk>
Aleph::set< T, Compare, Tree >::~set ( )
inline

Destructor; todos los elementos son eliminados y la memoria es liberada.

+ Here is the call graph for this function:

◆ set()

template<typename T, class Compare = Aleph::less<T>, template< class, class > class Tree = Treap_Rk>
template<typename Itor >
Aleph::set< T, Compare, Tree >::set ( Itor  beg,
const Itor &  end 
)
inline

Instancia un conjunto con los elementos comprendidos en el rango [beg..end).

Este constructor instancia un conjunto con elementos iniciales copiados del contenedor asociado los iteradores beg y end.

Parameters
[in]begiterador posicionado en el primer elemento del contenedor a copiar.
[in]enditerador posicionado en el último más un elemento del contenedor a copiar.
Exceptions
domain_errorsi los iteradores beg y end no están asociados al mismo contenedor.
bad_allocsi no hay suficiente memoria.
Note
El elemento posicionado por el iterador end no se incluye.
+ Here is the call graph for this function:

Member Function Documentation

◆ count()

template<typename T, class Compare = Aleph::less<T>, template< class, class > class Tree = Treap_Rk>
size_type Aleph::set< T, Compare, Tree >::count ( const T &  value) const
inline

Retorna la cantidad de instancias de value que hay dentro del conjunto; o sea, por definición de set<T>, 1 si el elemento está dentro del conjunto; 0 de lo contrario.

Esta función es en sí una búsqueda absoluta cuyo resultado es 0 o 1.

Parameters
[in]valuevalor a buscar.
Returns
1 si el elemento se encuentra en el conjunto; 0 de lo contrario.

◆ erase() [1/3]

template<typename T, class Compare = Aleph::less<T>, template< class, class > class Tree = Treap_Rk>
size_type Aleph::set< T, Compare, Tree >::erase ( const T &  value)
inline

Borra value del conjunto.

erase(value) borra el elemento value del conjunto.

Parameters
[in]valuevalor del elemento a borrar.
Returns
1 si value estaba dentro del conjunto; o de lo contrario.
Note
En realidad el valor de retorno tiene sentido para multiset y multimap en el cual el valor de retorno es la cantidad instancias del elemento que fueron borradas.
+ Here is the call graph for this function:

◆ erase() [2/3]

template<typename T, class Compare = Aleph::less<T>, template< class, class > class Tree = Treap_Rk>
void Aleph::set< T, Compare, Tree >::erase ( iterator  pos)
inline

Borra del conjunto el valor actual del iterador pos.

erase(pos) borra del conjunto el elemento correspondiente al valor actual del iterador pos.

Parameters
[in]positerador cuyo valor actual será borrado.
Exceptions
domain_errorsi el iterador no está asociado al conjunto this.
underflow_errorsi el iterador está desbordado por la izquierda.
overflow_errorsi el iterador está desbordado por la derecha.
+ Here is the call graph for this function:

◆ erase() [3/3]

template<typename T, class Compare = Aleph::less<T>, template< class, class > class Tree = Treap_Rk>
iterator Aleph::set< T, Compare, Tree >::erase ( const iterator &  beg,
const iterator &  end 
)
inline

Borra del conjunto el rango comprendido por [beg..end).

erase(beg,end) borra eficientemente todos los elementos del conjunto delimitados por los iteradores beg y end.

Parameters
[in]begiterador posicionado sobre el elemento inicio del rango.
[in]enditerador posicionado sobre el último más un elemento del rango.
Exceptions
domain_errorsi los iteradores beg y end no están asociados a this.
Note
El elemento posicionado por el iterador end no se incluye.
+ Here is the call graph for this function:

◆ find()

template<typename T, class Compare = Aleph::less<T>, template< class, class > class Tree = Treap_Rk>
iterator Aleph::set< T, Compare, Tree >::find ( const T &  value) const
inline

Retorna un iterador posicionado sobre el elemento del conjunto value.

find(value) busca el elemento value en el conjunto. Si éste es encontrado, entonces se retorna un iterador posicionado sobre el elemento del conjunto cuyo valor es value; de lo contrario, se retorna un iterador desbordado.

Parameters
[in]valuevalor a buscar dentro del conjunto
Returns
iterador posicionado sobre el elemento con valor value o iterador desbordado si value no se encuentra dentro del conjunto.
+ Here is the call graph for this function:

◆ insert() [1/3]

template<typename T, class Compare = Aleph::less<T>, template< class, class > class Tree = Treap_Rk>
std::pair<iterator, bool> Aleph::set< T, Compare, Tree >::insert ( const T &  value)
inline

Inserta value en el conjunto.

insert(value) inserta en el conjunto this una copia del elemento value y retorna un par con un iterador posicionado según la inserción y un valor lógico que indica si la inserción fue o no exitosa.

Parameters
[in]valuevalor a insertar en el conjunto.
Returns
un par con un iterador y un valor lógico. Si value no se encuentra dentro del conjunto, entonces el iterador está posicionado sobre el elemento recién insertado y el valor lógico es true; de lo contrario, el iterador está desbordado y el valor lógico es false.
Exceptions
bad_allocsi no hay suficiente memoria.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ insert() [2/3]

template<typename T, class Compare = Aleph::less<T>, template< class, class > class Tree = Treap_Rk>
iterator Aleph::set< T, Compare, Tree >::insert ( const iterator &  ,
const T &  value 
)
inline

Inserta value en el conjunto.

insert(pos, value) inserta en el conjunto this una copia del elemento value y retorna un par con un iterador posicionado según la inserción y un valor lógico que indica si la inserción fue o no exitosa.

En realidad, el iterador es irrelevante en el caso de set<T>, pues no se admiten duplicidades. Este esquema de inserción tiene sentido en multiset y multimap. Se provee por razones de compatibilidad y economía de código.

Parameters
[in]valuevalor a insertar en el conjunto.
Returns
un iterador posicionado sobre el elemento recién insertado si value no se encontraba dentro del conjunto; de lo contrario, el iterador se entrega desbordado.
Exceptions
bad_allocsi no hay suficiente memoria.
+ Here is the call graph for this function:

◆ insert() [3/3]

template<typename T, class Compare = Aleph::less<T>, template< class, class > class Tree = Treap_Rk>
template<typename Itor >
void Aleph::set< T, Compare, Tree >::insert ( Itor  beg,
const Itor &  end 
)
inline

Inserta en el conjunto los elementos de un contenedor comprendidos en el rango [beg..end).

insert(beg,end) toma un rango de elementos de un contenedor (set, map, multiset, multimap, list o vector) asociados a los iteradores beg y end, e inserta todos los elementos del rango en el conjunto this.

Parameters
[in]begiterador posicionado sobre el elemento inicio del rango.
[in]enditerador posicionado sobre el último más un elemento final del rango.
Exceptions
domain_errorsi los iteradores beg y end no están asociados al mismo contenedor.
bad_allocsi no hay suficiente memoria.
Note
El elemento posicionado por el iterador end no se incluye.
+ Here is the call graph for this function:

◆ lower_bound()

template<typename T, class Compare = Aleph::less<T>, template< class, class > class Tree = Treap_Rk>
iterator Aleph::set< T, Compare, Tree >::lower_bound ( const T &  value) const
inline

Retorna un iterador posicionado sobre el predecesor de value en el conjunto; independientemente de que value se encuentre o no en el conjunto.

+ Here is the call graph for this function:

◆ operator!=()

template<typename T, class Compare = Aleph::less<T>, template< class, class > class Tree = Treap_Rk>
bool Aleph::set< T, Compare, Tree >::operator!= ( const set< T, Compare, Tree > &  c) const
inline

Retorna true si el conjunto this no contiene exactamente los mismos elementos del conjunto c.

◆ operator<()

template<typename T, class Compare = Aleph::less<T>, template< class, class > class Tree = Treap_Rk>
bool Aleph::set< T, Compare, Tree >::operator< ( const set< T, Compare, Tree > &  c) const
inline

Retorna true si los elementos ordenados del conjunto this son menores que los del conjunto c.

+ Here is the call graph for this function:

◆ operator<=()

template<typename T, class Compare = Aleph::less<T>, template< class, class > class Tree = Treap_Rk>
bool Aleph::set< T, Compare, Tree >::operator<= ( const set< T, Compare, Tree > &  c) const
inline

Retorna true si los elementos ordenados del conjunto this son menores o iguales que los del conjunto c.

◆ operator==()

template<typename T, class Compare = Aleph::less<T>, template< class, class > class Tree = Treap_Rk>
bool Aleph::set< T, Compare, Tree >::operator== ( const set< T, Compare, Tree > &  c) const
inline

retorna true si el conjunto this contiene exactamente los mismos elementos del conjunto c.

+ Here is the call graph for this function:

◆ operator>()

template<typename T, class Compare = Aleph::less<T>, template< class, class > class Tree = Treap_Rk>
bool Aleph::set< T, Compare, Tree >::operator> ( const set< T, Compare, Tree > &  c) const
inline

Retorna true si los elementos ordenados del conjunto this son mayores que los del conjunto c.

◆ operator>=()

template<typename T, class Compare = Aleph::less<T>, template< class, class > class Tree = Treap_Rk>
bool Aleph::set< T, Compare, Tree >::operator>= ( const set< T, Compare, Tree > &  c) const
inline

Retorna true si los elementos ordenados del conjunto this son mayores o iguales que los del conjunto c.

◆ swap()

template<typename T, class Compare = Aleph::less<T>, template< class, class > class Tree = Treap_Rk>
void Aleph::set< T, Compare, Tree >::swap ( set< T, Compare, Tree > &  c)
inline

Intercambia en tiempo constante todos los elementos de this con los de c.

+ Here is the caller graph for this function:

◆ upper_bound()

template<typename T, class Compare = Aleph::less<T>, template< class, class > class Tree = Treap_Rk>
iterator Aleph::set< T, Compare, Tree >::upper_bound ( const T &  value) const
inline

Retorna un iterador posicionado sobre el sucesor de value en el conjunto; independientemente de que value se encuentre o no en el conjunto.

+ Here is the call graph for this function:

The documentation for this class was generated from the following file:

Leandro Rabindranath León