template<class T, class Compare = Aleph::less<T>, template< class, class > class Tree = Treap_Rk>
class Aleph::multiset< T, Compare, Tree >
Implementación Aleph del tipo estándar multiset<T> basada en árboles binarios de búsqueda con rangos.
Esta es una implantación parcial de la clase estándar C++ multiset<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.
multiset<T> implanta un conjunto de claves de tipo T en el cual 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 Rand_Tree set map multimap
template<class T, class Compare = Aleph::less<T>, template< class, class > class Tree = Treap_Rk>
template<typename Itor >
Instancia un multi-conjunto con los elementos comprendidos en el rango [beg..end).
Este constructor instancia un multi-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.
Hace referencia a Aleph::multiset< T, Compare, Tree >::insert().
template<class T, class Compare = Aleph::less<T>, template< class, class > class Tree = Treap_Rk>
Borra del multi-conjunto todas las instancias de value.
erase(value) borra del multi-conjunto todas las instancias el elemento value.
- Parámetros
-
[in] | value | valor del elemento a borrar. |
- Devuelve
- cantidad de instancias de value que fueron borradas.
template<class T, class Compare = Aleph::less<T>, template< class, class > class Tree = Treap_Rk>
Borra del multi-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. |
Hace referencia a KEY.
template<class T, class Compare = Aleph::less<T>, template< class, class > class Tree = Treap_Rk>
Borra del multi-conjunto el rango comprendido por [beg..end).
erase(beg,end) borra eficientemente todos los elementos del multi-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<class T, class Compare = Aleph::less<T>, template< class, class > class Tree = Treap_Rk>
Retorna un iterador posicionado sobre la primera instancia del elemento value en el multi-conjunto.
find(value) busca el elemento value en el multi-conjunto. Si éste es encontrado, entonces se retorna un iterador posicionado sobre el primer elemento del multi-conjunto con el valor en cuestión; de lo contrario, se retorna un iterador al elemento que antecedería a value si éste fuese insertado. Nótese que en este caso el elemento antecesor es el último entre los repetidos.
- Parámetros
-
[in] | value | valor a buscar dentro del multi-conjunto. |
- Devuelve
- iterador posicionado sobre el primer elemento con valor value si éste se encuentra en el multi-conjunto o un iterador al último elemento que antecedería a value si éste se insertase en el multi-conjunto.
Hace referencia a Aleph::multiset< T, Compare, Tree >::end().
template<class T, class Compare = Aleph::less<T>, template< class, class > class Tree = Treap_Rk>
template<class T, class Compare = Aleph::less<T>, template< class, class > class Tree = Treap_Rk>
Inserta value en el multi-conjunto a partir del iterador pos.
insert(pos, value) inserta en el multi-conjunto this, a partir del elemento posicionado por el iterador pos.
Según el estándar, pos debe ser considerado una ayuda a la inserción que ahorre eventuales búsquedas. Esto es correcto en el caso de Aleph si el valor del elemento actual de pos es igual a value; en este caso, la inserción toma y value queda exactamente después del elemento actual de pos .
Si el valor del elemento actual de pos no es igual a value, entonces es inevitable una búsqueda -que toma - de value en el multi-conjunto. Si value ya se encuentra, entonces value se inserta al final de los elementos repetidos. mismo que value, entonces la inserción se realiza en
- Parámetros
-
[in] | pos | iterador a partir del cual se desea realizar la inserción. |
[in] | value | valor a insertar en el multi-conjunto. |
- Devuelve
- un iterador posicionado sobre el elemento recién insertado.
- Excepciones
-
bad_alloc | si no hay suficiente memoria. |
overflow_error | si el iter |
Hace referencia a Aleph::multiset< T, Compare, Tree >::insert() y KEY.
template<class T, class Compare = Aleph::less<T>, template< class, class > class Tree = Treap_Rk>
template<typename Itor >
void Aleph::multiset< T, Compare, Tree >::insert |
( |
Itor |
beg, |
|
|
const Itor & |
end |
|
) |
| |
|
inline |
Inserta en el multi-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.
Hace referencia a Aleph::multiset< T, Compare, Tree >::insert().
template<class T, class Compare = Aleph::less<T>, template< class, class > class Tree = Treap_Rk>
Retorna un iterador posicionado sobre la primera instancia de value dentro de multi-conjunto.
lower_bound(value) busca el elemento value en el multi-conjunto. Si éste es encontrado, entonces se retorna un iterador posicionado sobre el primer elemento del multi-conjunto con el valor en cuestión; de lo contrario, se retorna un iterador desbordado al final del conjunto.
- Parámetros
-
[in] | value | valor a buscar dentro del multi-conjunto. |
- Devuelve
- iterador posicionado sobre el primer elemento con valor value si éste se encuentra en el multi-conjunto o un iterador desbordado si value no se encuentra en el multi-conjunto.
Hace referencia a Aleph::multiset< T, Compare, Tree >::end() y Aleph::multiset< T, Compare, Tree >::size().
template<class T, class Compare = Aleph::less<T>, template< class, class > class Tree = Treap_Rk>
Retorna un iterador posicionado sobre la última instancia de value dentro de multi-conjunto.
upper_bound(value) busca el elemento value en el multi-conjunto. Si éste es encontrado, entonces se retorna un iterador posicionado sobre el último elemento del multi-conjunto con el valor en cuestión; de lo contrario, se retorna un iterador desbordado al final del conjunto.
- Parámetros
-
[in] | value | valor a buscar dentro del multi-conjunto. |
- Devuelve
- iterador posicionado sobre el último elemento con valor value si éste se encuentra en el multi-conjunto o un iterador desbordado si value no se encuentra en el multi-conjunto.
Hace referencia a Aleph::multiset< T, Compare, Tree >::end() y Aleph::multiset< T, Compare, Tree >::size().