El uso de claves duplicadas con un multimap

UN mapa proporciona un método para trabajar rápidamente con listas de datos de tal manera que se puede acceder a cada elemento fácilmente con una llave. Usando un mapa es conveniente porque se puede acceder a los elementos en un orden aleatorio. Sin embargo, cada clave debe ser único. No es como si su aplicación fallará si se asigna un valor a una clave duplicada - el duplicado simplemente sobrescribir el valor original. He aquí un ejemplo:

Video: Eliminar imágenes repetidas - Borrar fotos Duplicadas VisiPics 2016

#incluir #incluir using namespace std-int main () {mapa matrimonios matrimonios ["tom"] = "Suzy"-marriages ["Acosar"] = "Harriet"-marriages ["tom"] = "Amy"-cout lt; lt; matrimonios ["tom"] lt; lt; endl-cout lt; lt; matrimonios ["Acosar"] lt; lt; endl retorno 0-}

Tenga en cuenta que en realidad hay dos hombres llamados tom, pero tienen esposas con diferentes nombres. Al ejecutar este ejemplo, no obtiene el resultado esperado:

AmyHarriet

El valor original se ha perdido debido a una mapa Sólo puede tener una clave llamada tom. Puede utilizar una multimap Para superar este problema. UN multimap tiene la misma premisa básica de que le permite asignar valores basados ​​en una llave, pero la variable resultante puede tener entradas duplicadas. Aquí está un ejemplo de una multimap que se dirige nuestra edición:

#incluir #incluir usando espacio de nombres std-int main () {MultiMap matrimonios-marriages.insert (par ("tom", "Suzy")) - marriages.insert (par ("Acosar", "Harriet")) - marriages.insert (par ("tom", "Amy")) - de Valores (multimap :: iterador = marriages.begin (-)! = Valores marriages.end () - Valores ++) {cout lt; lt; (* Valores) .First lt; lt; " esta casado con " lt; lt; (* Valores) .SECOND lt; lt; endl-} cout lt; lt; endl lt; lt; "Las mujeres casadas con hombres con nombre Tom" lt; lt; Valores endl-multimap :: const_iterator = marriages.find ("tom") Número -INT = marriages.count ("tom") -para (int i = 0- i lt; Número- i ++) {cout lt; lt; Valores-gt; segundo lt; lt; endl - ++ valores-}} retorno 0-

En este caso, todavía se crea un objeto que contiene dos cuerda objetos, la primera de las cuales es la clave. Un insertar() función le permite añadir nuevas entradas a matrimonios. La técnica es diferente de usar una norma mapa, Pero el resultado es el mismo. Cada entrada consta de dos cuerda valores.

Video: Como eliminar archivos duplicados en Mac

Para visualizar las entradas, debe trabajar con iteradores. El ejemplo muestra dos enfoques que puede utilizar. Las primeras listas todas las entradas en los matrimonios. Se inicia mediante la creación de un iterador que apunta al comienzo de matrimonios utilizando el marriages.begin () función. El bucle continúa mientras Valores no es igual a marriages.end (). Observe la notación de prefijo utilizado para actualizar Valores a la entrada siguiente en la lista. También es importante tener en cuenta que Valores proporciona un puntero a los datos, por lo que debe utilizar (* Valores) .First para acceder a la primera cadena en la entrada o Valores-gt; primero.

UN multimap en realidad es bastante flexible. Se puede contar el número de entradas duplicadas utilizando la clave contar() función. Para utilizar esta función, debe proporcionar el valor de la clave que desea localizar. los encontrar() función hace posible la creación de un iterador que sólo contiene las entradas para una tecla específica. El ejemplo muestra una técnica para la iteración a través de los valores que se encuentran. La salida de este ejemplo es el siguiente:

Video: Como eliminar (Música, Archivos, Vídeos, Imágenes) REPETIDAS de PC -2017- [Programa y Tutorial] ✔️

Harry está casado con HarrietTom está casada con SuzyTom está casada con AmyWomen Casado con hombres mencionados TomSuzyAmy
Artículos Relacionados