Un mapa en el software es como una matriz, pero es una matriz con dos columnas en lugar de una. La primera columna tiene las teclas y la segunda columna tiene los valores. Cada fila es un par, haciendo un par de clave/valor. Una clave está directamente relacionada con su valor.
Un ejemplo de un mapa es 'c', 30, 'b', 20, 'd', 30, 'e', 40, 'a', 10. El primer par de clave/valor insertado aquí es 'c', 3, donde 'c' es la clave y 30 es el valor. Este mapa no está ordenado por teclas. Ordenar este mapa por teclas produce 'a', 10, 'b', 20, 'c', 30, 'd', 30, 'e', 40. Observe que puede haber valores duplicados, pero no claves duplicadas. Un mapa ordenado es un mapa ordenado por teclas.
Un Multiset está a un conjunto, ya que un multimap es para un mapa. Esto significa que hay mapas con teclas duplicadas. Un ejemplo de un multimap es 'a', 10, 'b', 20, 'b', 20, 'c', 30, 'c', 30, 'D ', 30, ' e ', 40. Y como se indicó anteriormente, este artículo no se ocupa de multimap, más bien, se trata de la estructura de datos de C ++ llamada MAP.
En C ++, una estructura de datos es una estructura con propiedades (miembros de datos) y métodos (funciones de miembros). Los datos de la estructura son una lista; Un conjunto es una lista; Un mapa es una lista de pares de clave/valor.
Este artículo discute los conceptos básicos de conjuntos y mapas en C ++, y para comprender mejor este artículo, el lector debería haber tenido un conocimiento básico de C++.
Contenido del artículo:
Clase y sus objetos:
En C ++, el conjunto, el mapa y otras estructuras similares se llaman contenedores. Una clase es una unidad generalizada con miembros de datos, que son variables y funciones de miembros que están relacionadas. Cuando los miembros de los datos reciben valores, se forma un objeto. Sin embargo, un objeto se forma en un proceso llamado instanciación. Como una clase puede conducir a diferentes valores para las mismas variables de miembros de datos, se pueden instanciar diferentes objetos de la misma clase.
En C ++, un conjunto inutilizable es una clase, así como un mapa inutilizable. Cuando un objeto se instancia desde el conjunto inutilizable o del mapa inutilizable, el objeto se convierte en la estructura de datos real. Con las estructuras de datos de conjunto y mapa, el miembro de datos principales es una lista. Bueno, el conjunto y el mapa forman un grupo de contenedores llamados contenedores asociativos ordenados. El conjunto desordenado y el mapa desordenado también existen, pero desafortunadamente no se abordan en este artículo.
Creando un conjunto o un mapa:
Instanciar un conjunto desde su clase establecida es crear un conjunto; Instanciar un mapa de su clase de mapa es crear un mapa. El objeto creado así recibe un nombre de la elección del programador.
Para crear un conjunto, el programa debe comenzar con:
#incluirTenga en cuenta la directiva "#include", que incluye la biblioteca establecida que tiene la clase establecida a partir de la cual se instanciarán las estructuras de datos establecidas.
Para crear un mapa, el programa debe comenzar con:
#incluirTenga en cuenta la directiva "#include", que incluye la biblioteca de mapas que tiene la clase de mapa a partir de la cual se instanciarán las estructuras de datos del mapa.
La sintaxis para crear un conjunto vacío es:
colocarEjemplo:
colocarUn ejemplo para crear un conjunto con contenido es:
colocarLa sintaxis para crear un mapa vacío es:
mapaEjemplo:
mapaUn ejemplo para crear un mapa con contenido es:
mapaIterador conceptos básicos:
Un iterador es un puntero elaborado, que puede usarse para atravesar la lista de la estructura de datos desde el principio hasta el final.
La función de miembro begin ()
La función de miembro begin () devuelve un iterador que apunta al primer elemento de la lista. El siguiente ejemplo ilustra esto para el conjunto:
colocarNota La forma en que Begin () se ha utilizado con SETOBJ y el operador DOT. iter es el objeto iterador devuelto. Además, tenga en cuenta la forma en que se ha declarado. * es el operador de indirección. Como se usa con iter, devuelve el primer elemento del conjunto; El primer elemento es 2 en lugar de 6 - ver explicación a continuación.
El siguiente ejemplo ilustra el uso de la función Begin () para el mapa:
mapaNota La forma en que Begin () se ha utilizado con MAPOBJ y el operador DOT. iter es el objeto iterador devuelto. Además, tenga en cuenta la forma en que se ha declarado. "Primero", como se usa aquí, se refiere a la clave. "Segundo" se refiere al valor correspondiente a la clave. Observe cómo se han utilizado con Iter para obtener los componentes del elemento de inicio de la lista. El primer elemento es a, 10 en lugar de c, 30 - ver explicación a continuación.
La función miembro "begin () const"
La función miembro "Begin () const" devuelve un iterador que apunta al primer elemento de la lista cuando la declaración del conjunto comienza con const (para constante). En esta condición, el valor en la lista, referido por el iterador devuelto, no puede ser cambiado por el iterador. El siguiente ejemplo ilustra su uso para el conjunto:
Establecimiento de constanteNota La forma en que Begin () se ha utilizado con SETOBJ y el operador DOT. No se ha escrito "const" justo después de comenzar (). Sin embargo, "const" ha precedido a la declaración. aquí está el objeto iterador constante devuelto, que es diferente del iterador normal. Además, tenga en cuenta la forma en que se ha declarado. * es el operador de indirección; como se usa con iter, devuelve el primer elemento del conjunto. El primer elemento es 2 en lugar de 6 - ver explicación a continuación.
El siguiente ejemplo ilustra el uso de la función "begin () const" para el mapa:
mapa de la constanteNota La forma en que Begin () se ha utilizado con MAPOBJ y el operador DOT. No se ha escrito "const" justo después de comenzar (). Sin embargo, "const" ha precedido a la declaración. aquí está el objeto iterador constante devuelto, que es diferente del iterador normal. Además, tenga en cuenta la forma en que se ha declarado. "Primero", como se usa aquí, se refiere a la clave; "Segundo", como se usa aquí, se refiere al valor correspondiente a la clave. Observe cómo se han utilizado con Iter para obtener los componentes del elemento de inicio de la lista. El primer elemento es a, 10 en lugar de c, 30 - ver explicación a continuación.
La función de miembro final ()
La función miembro final () devuelve un iterador que apunta justo después del final de la lista. El siguiente ejemplo ilustra esto para el conjunto:
colocarNota La forma en que End () se ha utilizado con SETOBJ y el operador DOT. iter es el objeto iterador devuelto. Además, tenga en cuenta la forma en que se ha declarado. * es el operador de indirección; Como se usa con iter, devuelve el último elemento+1 del conjunto. En la computadora del autor, este último elemento+1 es 5, que no está en la lista. Entonces, cuidado de no usar este elemento.
El siguiente ejemplo ilustra el uso de la función End () para el mapa:
mapaNota La forma en que End () se ha utilizado con MAPOBJ y el operador DOT. iter es el objeto iterador devuelto. Además, tenga en cuenta la forma en que se ha declarado. * es el operador de indirección; Como se usa con iter, devuelve el último elemento+1 del mapa. En la computadora del autor, este último elemento+1 es , 0, que no está en la lista. Entonces, cuidado de no usar este elemento.
La función miembro "end () const"
La función miembro "End () const" devuelve un iterador que apunta justo después del final de la lista cuando la declaración del conjunto comienza con const (para constante). En esta condición, el valor en la lista, referido por el iterador devuelto, no puede ser cambiado por el iterador. El siguiente ejemplo ilustra su uso para el conjunto:
Establecimiento de constanteNota La forma en que End () se ha utilizado con SETOBJ y el operador DOT. No se ha escrito "const" justo después del final (). Sin embargo, "const" ha precedido a la declaración. iter es el objeto iterador devuelto. Además, tenga en cuenta la forma en que se ha declarado. * es el operador de indirección; Como se usa con iter, devuelve el último elemento+1 del conjunto.
El siguiente ejemplo ilustra el uso de la función "end () const" para el mapa:
mapa de la constanteNota La forma en que End () se ha utilizado con MAPOBJ y el operador DOT. No se ha escrito "const" justo después del final (). Sin embargo, "const" ha precedido a la declaración. iter es el objeto iterador constante devuelto, que es diferente del iterador normal. Además, observa cuidadosamente la forma en que se ha declarado.
Acceso de elemento para establecer y mapa:
Colocar
Con el conjunto, el elemento se lee utilizando el operador de indirección. Los primeros dos elementos de un conjunto se leen en el siguiente ejemplo:
colocarLa salida es 2, luego seguida de 4 - ver explicación a continuación. Para apuntar en el siguiente elemento de la lista, el iterador está incrementado.
NOTA: Un elemento no se puede cambiar usando el operador de indirección para el conjunto. Por ejemplo, "*iter = 9;" no es posible.
mapa
Un mapa consta de pares de clave/valor. Se puede leer un valor utilizando la clave correspondiente y cambiar utilizando la misma clave. El siguiente segmento de código ilustra esto:
mapaLa salida es:
20El operador DOT no se ha utilizado aquí. En cambio, es el operador de soportes cuadrados, que toma la clave como contenido, que se ha utilizado.
Orden de elementos en un conjunto o mapa:
Los elementos se pueden insertar en un conjunto, en cualquier orden. Sin embargo, una vez insertado, el conjunto reorganiza sus elementos en orden ascendente. El orden ascendente es el orden predeterminado. Si se necesita orden descendente, entonces el conjunto debe declararse como en el siguiente ejemplo:
colocarEntonces, después del tipo, e.gramo., int, para la plantilla, hay una coma, seguida de "mayor" en los soportes de ángulo.
Los elementos se pueden insertar en un mapa en cualquier orden. Sin embargo, una vez insertado, el mapa reorganiza sus elementos en orden ascendente por clave (solo) mientras mantiene la relación entre cada clave y su valor. El orden ascendente es el orden predeterminado; Si se necesita orden descendente, entonces el mapa debe declararse como en el siguiente ejemplo:
mapaEntonces, después del par de tipos, E.gramo., "Char, int", para la plantilla, hay una coma, seguida de "mayor" en los soportes de ángulo.
Atravesar un set
El bucle o for-bucle con el iterador se puede usar para atravesar un conjunto. El siguiente ejemplo utiliza un for-bucle para atravesar un conjunto que se ha configurado en orden descendente:
colocarLa salida es:
10 8 6 4 2Incrementar un iterador lo señala al siguiente elemento.
Atravesar un mapa
El bucle o for-bucle con el iterador se puede usar para atravesar un mapa. El siguiente ejemplo utiliza un bucle for-loop para atravesar un mapa que se ha configurado en orden descendente:
mapaLa salida es:
e, 40, d, 30, c, 30, b, 20, a, 10,Incrementar un iterador lo señala al siguiente elemento. "Primero", en el código, se refiere a la clave y "segundo" se refiere al valor correspondiente. Tenga en cuenta cómo se han obtenido estos valores para la salida.
Otras funciones miembros de uso común:
La función size ()
Esta función devuelve un entero, que es el número de elementos en la lista. Ejemplo de ejemplo:
colocarLa salida es 5.
Ejemplo del mapa:
mapaLa salida es 5.
La función insert ()
set no permite duplicado. Entonces, cualquier duplicado insertado es rechazado en silencio. Con el conjunto, el argumento a la función insert () es el valor a insertar. El valor se instala en una posición, en la que el orden en el conjunto permanece ascendente o descendente. Ejemplo:
colocarLa salida es:
2 4 6 8 9 10 12NOTA: La función de miembro insert () se puede usar para completar un conjunto vacío.
el mapa no permite duplicar por clave. Entonces, cualquier duplicado insertado es rechazado en silencio. Con el mapa, el argumento a la función insert () es el par de clave/valor en los aparatos ortopédicos. El elemento se ajusta en una posición por clave, en la que el orden en el mapa permanece ascendente o descendente. Ejemplo:
mapaLa salida es:
a, 10, b, 20, c, 30, d, 30, e, 40, f, 50, g, 60,NOTA: La función de miembro insert () se puede usar para poblar un mapa vacío.
La función vacía ()
Esta función devuelve verdadero si la lista está vacía y falsa si. Ejemplo de ejemplo:
colocarLa salida es 0 para falso, lo que significa que el conjunto aquí no está vacío.
Ejemplo del mapa:
mapaLa salida es 0 para falso, lo que significa que el mapa aquí no está vacío.
La función ERASE ()
Considere el siguiente segmento de código:
colocarLa salida es:
Nuevo tamaño: 4La función ERASE () toma un iterador que apunta a un elemento como argumento. Después de borrar el elemento, la función ERASE () devuelve un iterador que apunta al siguiente elemento.
Considere el siguiente segmento de código:
mapaLa salida es:
Nuevo tamaño: 4La función ERASE () toma un iterador que apunta a un elemento como argumento. Después de borrar el elemento, la función ERASE () devuelve un iterador que apunta al siguiente elemento.
La función Clear ()
La función Clear () elimina todos los elementos de la lista. Ejemplo de ejemplo:
colocarLa salida es 0.
Ejemplo del mapa:
mapaLa salida es 0.
Conclusión:
Una estructura de datos establecida en C ++ es una estructura en la que la lista de elementos se almacena en orden ascendente de forma predeterminada, o en orden descendente por la elección del programador. Todos los elementos del set son únicos. Una estructura de datos MAP en C ++ es una estructura en la que la lista es un hash de pares de clave/valor, almacenado en orden ascendente de claves por defecto, o en orden descendente de claves por el programa de programador. Las claves también son únicas, y puede haber valores duplicados. El miembro principal de datos de cualquiera de las estructuras es la lista. Cualquiera de las estructuras tiene funciones miembros, algunas de las cuales se usan comúnmente.