template<class Key, class Elem, class Compare = Aleph::less<Key>, template< class, class > class Tree = Treap_Rk>
class Aleph::map< Key, Elem, Compare, Tree >
Implementación Aleph del tipo estándar map<T> basada en árboles binarios de búsqueda con rangos.
Esta es una implantación parcial de la clase estándar C++ map<Key,Elem>, la cual está 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.
map<Key,Elem> implanta un mapeo desde claves de tipo Key, que no se pueden repetir, a un mapeo de elementos de tipo Elem, los cuales eventualmente pueden repetirse si se asocian a claves distintas.
Los elementos del mapeo son pares ordenados. Un mapeo es sinónimo de función desde Key–>Elem. Esta versión el mapeo usa el tipo Pair de Aleph, cuya implantación está basada en la de gnu.
Un mapeo m es acesible mediante el operador m[key], donde key es la clave de indización. El resultado de m[key] es el elemento asociado a la clave key.
- Parámetros
-
Key | el tipo de dato que almacenará el mapeo. |
Elem | el tipo de elemento a indizar según una clave. |
Compare | el criterio de comparación entre las claves de tipo Key. Por omisión se implanta Key::operator<(const Key &). |
Tree | la clase de árbol binario de búsqueda con rangos que instrumentará el mapeo. Por omisión si usa Treap_Rk |
- Ver también
- Treap_Rk set multiset multimap
template<class Key, class Elem, class Compare = Aleph::less<Key>, template< class, class > class Tree = Treap_Rk>
template<typename Itor >
Aleph::map< Key, Elem, Compare, Tree >::map |
( |
Itor |
beg, |
|
|
const Itor & |
end |
|
) |
| |
|
inline |
Instancia un mapeo con los elementos comprendidos en el rango [beg..end).
Este constructor instancia un mapeo 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::map< Key, Elem, Compare, Tree >::insert().
template<class Key, class Elem, class Compare = Aleph::less<Key>, template< class, class > class Tree = Treap_Rk>
size_type Aleph::map< Key, Elem, Compare, Tree >::count |
( |
const Key & |
key | ) |
|
|
inline |
Retorna la cantidad de instancias de key que hay dentro del mapeo; o sea, por definición de set<T>, 1 si el elemento está dentro del mapeo; 0 de lo contrario.
Esta función es en sí una búsqueda absoluta cuyo resultado es 0 o 1.
- Parámetros
-
[in] | key | valor de clave a buscar. |
- Devuelve
- 1 si el elemento se encuentra en el mapeo; 0 de lo contrario.
template<class Key, class Elem, class Compare = Aleph::less<Key>, template< class, class > class Tree = Treap_Rk>
size_type Aleph::map< Key, Elem, Compare, Tree >::erase |
( |
const Key & |
key | ) |
|
|
inline |
Borra key del mapeo.
erase(key) borra el elemento key del mapeo.
- Parámetros
-
[in] | key | valor del elemento a borrar. |
- Devuelve
- 1 si key estaba dentro del mapeo; o de lo contrario.
- Nota
- 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.
Referenciado por Aleph::map< Key, Elem, Compare, Tree >::erase().
template<class Key, class Elem, class Compare = Aleph::less<Key>, template< class, class > class Tree = Treap_Rk>
Borra del mapeo el valor actual del iterador pos.
erase(pos) borra del mapeo 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 mapeo this. |
underflow_error | si el iterador está desbordado por la izquierda. |
overflow_error | si el iterador está desbordado por la derecha. |
Hace referencia a Aleph::map< Key, Elem, Compare, Tree >::erase() y KEY.
template<class Key, class Elem, class Compare = Aleph::less<Key>, template< class, class > class Tree = Treap_Rk>
Borra del mapeo el rango comprendido [beg..end).
erase(beg,end) borra eficientemente todos los elementos del mapeo 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.
Hace referencia a Aleph::destroyRec() y Aleph::map< Key, Elem, Compare, Tree >::end().
template<class Key, class Elem, class Compare = Aleph::less<Key>, template< class, class > class Tree = Treap_Rk>
Retorna un iterador posicionado sobre el elemento del mapeo key.
find(key) busca el elemento key en el mapeo. Si éste es encontrado, entonces se retorna un iterador posicionado sobre el elemento del mapeo cuyo valor es key; de lo contrario, se retorna un iterador desbordado.
- Parámetros
-
[in] | key | valor a buscar dentro del mapeo. |
- Devuelve
- iterador posicionado sobre el elemento con valor key o iterador desbordado si key no se encuentra dentro del mapeo.
Hace referencia a Aleph::map< Key, Elem, Compare, Tree >::end().
template<class Key, class Elem, class Compare = Aleph::less<Key>, template< class, class > class Tree = Treap_Rk>
Inserta key en el mapeo.
insert(key) inserta en el mapeo this una copia del elemento key 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] | key | valor a insertar en el mapeo. |
- Devuelve
- un par con un iterador y un valor lógico. Si key no se encuentra dentro del mapeo, 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::map< Key, Elem, Compare, Tree >::insert() y Aleph::map< Key, Elem, Compare, Tree >::map().
template<class Key, class Elem, class Compare = Aleph::less<Key>, template< class, class > class Tree = Treap_Rk>
Inserta key en el mapeo.
insert(pos, key) inserta en el mapeo this una copia del elemento key 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] | key | valor a insertar en el mapeo. |
- Devuelve
- un iterador posicionado sobre el elemento recién insertado si key no se encontraba dentro del mapeo; de lo contrario, el iterador se entrega desbordado.
- Excepciones
-
bad_alloc | si no hay suficiente memoria. |
Hace referencia a Aleph::map< Key, Elem, Compare, Tree >::insert().
template<class Key, class Elem, class Compare = Aleph::less<Key>, template< class, class > class Tree = Treap_Rk>
template<typename Itor >
void Aleph::map< Key, Elem, Compare, Tree >::insert |
( |
Itor |
beg, |
|
|
const Itor & |
end |
|
) |
| |
|
inline |
Inserta en el mapeo 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 mapeo 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::map< Key, Elem, Compare, Tree >::insert().