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.
- Parámetros
-
T | el tipo de dato que almacenará el conjunto. |
Compare | el criterio de comparación entre los elementos de tipo T. Por omisión se implanta T::operator<(const T&). |
Tree | la clase de árbol binario de búsqueda con rangos que instrumentará el conjunto. Por omisión si usa Treap_Rk |
- Ver también
- Treap_Rk map multiset multimap
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.
- Parámetros
-
[in] | beg | iterador posicionado en el primer elemento del contenedor a copiar. |
[in] | end | iterador posicionado en el último más un elemento del contenedor a copiar. |
- Excepciones
-
domain_error | si los iteradores beg y end no están asociados al mismo contenedor. |
bad_alloc | si no hay suficiente memoria. |
- Nota
- El elemento posicionado por el iterador end no se incluye.
template<typename T, class Compare = Aleph::less<T>, template< class, class > class Tree = Treap_Rk>
template<typename T, class Compare = Aleph::less<T>, template< class, class > class Tree = Treap_Rk>
template<typename T, class Compare = Aleph::less<T>, template< class, class > class Tree = Treap_Rk>
Borra del conjunto el valor actual del iterador pos.
erase(pos) borra del conjunto el elemento correspondiente al valor actual del iterador pos.
- Parámetros
-
[in] | pos | iterador cuyo valor actual será borrado. |
- Excepciones
-
domain_error | si el iterador no está asociado al conjunto this. |
underflow_error | si el iterador está desbordado por la izquierda. |
overflow_error | si el iterador está desbordado por la derecha. |
template<typename T, class Compare = Aleph::less<T>, template< class, class > class Tree = Treap_Rk>
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.
- Parámetros
-
[in] | beg | iterador posicionado sobre el elemento inicio del rango. |
[in] | end | iterador posicionado sobre el último más un elemento del rango. |
- Excepciones
-
domain_error | si los iteradores beg y end no están asociados a this. |
- Nota
- El elemento posicionado por el iterador end no se incluye.
template<typename T, class Compare = Aleph::less<T>, template< class, class > class Tree = Treap_Rk>
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.
- Parámetros
-
[in] | value | valor a buscar dentro del conjunto |
- Devuelve
- iterador posicionado sobre el elemento con valor value o iterador desbordado si value no se encuentra dentro del conjunto.
template<typename T, class Compare = Aleph::less<T>, template< class, class > class Tree = Treap_Rk>
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.
- Parámetros
-
[in] | value | valor a insertar en el conjunto. |
- Devuelve
- 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.
- Excepciones
-
bad_alloc | si no hay suficiente memoria. |
Referenciado por Aleph::compute_min_cut(), Aleph::Net_Graph< NodeT, ArcT >::disconnect_arc(), Aleph::set< Node * >::insert(), Aleph::Net_Graph< NodeT, ArcT >::insert_node(), Aleph::min_cut(), Aleph::Net_Graph< NodeT, ArcT >::remove_arc() y Aleph::set< Node * >::set().
template<typename T, class Compare = Aleph::less<T>, template< class, class > class Tree = Treap_Rk>
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.
- Parámetros
-
[in] | value | valor a insertar en el conjunto. |
- Devuelve
- 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.
- Excepciones
-
bad_alloc | si no hay suficiente memoria. |
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.
- Parámetros
-
[in] | beg | iterador posicionado sobre el elemento inicio del rango. |
[in] | end | iterador posicionado sobre el último más un elemento final del rango. |
- Excepciones
-
domain_error | si los iteradores beg y end no están asociados al mismo contenedor. |
bad_alloc | si no hay suficiente memoria. |
- Nota
- El elemento posicionado por el iterador end no se incluye.