Tengo algunas preguntas sobre el uso de std::map
:¿Son estas prácticas apropiadas cuando se trabaja con std :: map?
está utilizando un
enum
como la clave enstd::map
una buena práctica? Considere el siguiente código:enum Shape{ Circle, Rectangle }; int main(int argc, char* argv[]) { std::map<Shape,std::string> strMap; // strMap.insert(Shape::Circle,"Circle"); // This will not compile strMap[Shape::Circle] = "Circle"; // But this will work return 0; }
En el ejemplo anterior, ¿por qué es la llamada a
insert()
generando un error de compilación, mientras que el operador sobrecargado[]
funciona correctamente? ¿Cuál de estos métodos se recomienda para insertar elementos en unstd::map
?entiendo que cuando se utiliza el método de la clase
find()
std::map
, que no está haciendo una búsqueda secuencial en el contenedor, pero haciendo un poco de búsqueda logarítmica que será mucho más rápido que la búsqueda secuencial. ¿Es este entendimiento correcto?
cuanto a su edición, no veo muy claro. Imagine que las formas crecen a siete: círculo, rectángulo, triángulo, huevo, lo que sea. Luego tiene una Pieza de clase que tiene una variable de "forma" y desea acceder al valor asignado. Un mapa será más rápido. –
Para Daniel: Como mencionamos los padres, un mapa será más lento ya que es O (logn) frente al tiempo constante del vector. –
Sí, pero tal vez me falta algo. ¡Todo el punto en un mapa es que tiene una clave y busca su valor asignado! Sé que la tecla Círculo y quiero acceder a "Círculo" en el mapa, no puedo hacer eso con un vector. Puedo tener un vector de las teclas y otro de los valores, pero no de búsqueda. –