unordered_set unordered_map unordered example c++ c++11 iterator unordered-map

c++ - example - unordered_map vs map



¿Por qué unordered_map no tiene rbegin() o rend(), sino solo begin() y end() (2)

Parece extraño iterar a través de un unordered_map , con begin (), end () y un iterador directo.

Si es así, ¿por qué no tiene rbegin (), rend () y iteradores bidireccionales también? ¿Hay alguna razón técnica?


No está ordenado, por lo que el orden en que tiene lugar la iteración es (o debería ser) sin importancia.


Cite de The C++ Standard Library

Los iteradores inversos permiten que los algoritmos operen hacia atrás al conmutar la llamada de un operador de incremento internamente a una llamada del operador de decremento, y viceversa. Todos los contenedores con iteradores bidireccionales o iteradores de acceso aleatorio (todos los contenedores de secuencia, excepto forward_list y todos los contenedores asociativos) pueden crear iteradores inversos a través de sus funciones miembro rbegin () y rend (). Desde C ++ 11, también se proporcionan las funciones miembro correspondientes que devuelven iteradores de solo lectura, crbegin () y crend ​​().

Para las listas directas y los contenedores no ordenados, no se proporciona ninguna interfaz de iteración hacia atrás (rbegin (), rend (), etc.). La razón es que la implementación requiere solo listas unidas individualmente para pasar por los elementos.