He oído a muchas personas decir que si la cantidad de elementos que se esperan en el contenedor es relativamente pequeña, es mejor usar std::vector
en lugar de aunque utilizo el contenedor solo para buscar y no para iterar.vector o mapa, ¿cuál usar?
¿Cuál es la verdadera razón detrás de esto?
Obviamente, el rendimiento de búsqueda del mapa no puede ser peor que el del vector (aunque puede ser en nanosegundos/microsegundos), ¿tiene algo que ver con el uso de la memoria?
¿La tarifa del vector es mejor/peor que el mapa en la fragmentación del espacio de direcciones virtuales?
Estoy usando la biblioteca STL que viene con Visual Studio (es decir, la implementación de Microsoft) ¿Eso hace alguna diferencia con otras implementaciones?
Extrañamente, encontré que HashMap de Java es mucho más rápido que el mapa de C++. El último párrafo de tu publicación posiblemente describe por qué. – wmac
@wmac: Correcto: es más exacto comparar 'HashMap' de Java con C++' hash_map' o 'unordered_map', y' SortedMap' de Java con 'mapa' de C++. –
Cuando realicé la evaluación comparativa, encontré el punto en el que std :: map determina que un std :: vector sea alrededor de 8000, pero tan bajo como 1000 en hardware, el código que utilicé está disponible en: https: // github. com/BlackToppStudios/DAGFrameScheduler/blob/8bfaa295b76f8e58dd4fc21186e1c7f3dd3e323a/tests/dagsizestests.h – Sqeaky