Vector de pares en C++

Vector De Pares En C



En C++, un vector es un contenedor versátil que puede cambiar de tamaño dinámicamente, lo que permite una manipulación eficiente de los elementos. Mientras que un par es un contenedor simple que puede contener dos objetos heterogéneos, lo que proporciona un medio conveniente para asociar y administrar los datos relacionados. Cuando estos pares se organizan dentro de un vector, los desarrolladores obtienen la capacidad de crear colecciones dinámicas de pares clave-valor o cualquier otra combinación de dos elementos distintos.

Esta estructura de datos es particularmente útil en escenarios donde los elementos deben almacenarse como pares, como cuando se trata de pares clave-valor o cuando se representan las relaciones entre entidades. En este artículo, exploraremos el concepto de un vector de pares de C++ y exploraremos varios ejemplos para ilustrar sus aplicaciones prácticas.







Ejemplo 1: uso básico: iteración sobre un vector de pares

Consideremos un ejemplo básico en el que creamos un vector de pares que representan los nombres de los estudiantes y sus edades correspondientes. Iterar sobre un vector de pares es similar a iterar sobre un vector regular. Se pueden emplear iteradores o bucles 'for' basados ​​en rangos para recuperar cada par dentro del vector.



Este ejemplo muestra la sintaxis de un 'vector de pares' en un contexto significativo.



#incluir
#incluir
#incluir

ent principal ( ) {
   
estándar::vector < std::par < std::cadena, int >> datos de estudiante;

StudentData.push_back ( std::hacer_par ( 'Adán' , 20 ) ) ;
StudentData.push_back ( std::hacer_par ( 'Factura' , 22 ) ) ;
StudentData.push_back ( std::hacer_par ( 'Charlie' , 21 ) ) ;

std::cout << 'Datos del estudiante: \norte ' ;
    para ( constante automática & estudiante: datos de estudiante ) {
std::cout << 'Nombre: ' << estudiante.primero << ', Edad: ' << estudiante.segundo << std::endl;
    }

    devolver 0 ;
}

 
En este fragmento de código C++, comenzamos incluyendo tres archivos de encabezado esenciales: “ ” para operaciones de entrada y salida, “” para utilizar el contenedor de vectores y “” para acceder a “std:: plantilla de par”. Estos encabezados nos permiten utilizar las funcionalidades que son esenciales para nuestro programa.





En el futuro, dentro de la función main(), declaramos un vector llamado 'studentData' usando el contenedor 'std::vector'. Este vector está diseñado para almacenar los pares donde cada par encapsula el nombre de un estudiante (representado como 'std::string') y su edad (un entero 'int'). Luego, completamos el vector 'studentData' con tres pares. Usando la función “push_back”, se agregan pares al final del vector, ajustando dinámicamente su tamaño. Luego, un bucle recorre en iteración “studentData”, extrayendo e imprimiendo el nombre y la edad de cada estudiante. El resultado muestra “Datos del estudiante:” que enfatiza la representación estructurada. Los nombres y edades de los estudiantes se imprimen por separado, presentando claramente los datos almacenados.



Ejemplo 2: ordenar un vector de pares

Ordenar un vector de pares es una operación común, especialmente cuando se trata de asociaciones clave-valor. La función 'std::sort' del encabezado ' ' se puede utilizar para este propósito. Veamos cómo ordenar un vector de pares según el primer y segundo elemento:

#incluir
#incluir
#incluir

ent principal ( ) {
   
estándar::vector < std::par < std::cadena, int >> información;

info.push_back ( std::hacer_par ( 'Pedro' , 15 ) ) ;
info.push_back ( std::hacer_par ( 'dora' , 29 ) ) ;
info.push_back ( std::hacer_par ( 'Hanna' , 20 ) ) ;

std::cout << 'Información original: \norte ' ;
    para ( constante automática & entrada: información ) {
std::cout << 'Nombre: ' << entrada.primera << ', Edad: ' << entrada.segundo << std::endl;
    }

 
std::ordenar ( info.comenzar ( ) , info.fin ( ) ) ;

std::cout << ' \norte Información ordenada: \norte ' ;
    para ( constante automática & entrada: información ) {
std::cout << 'Edad: ' << entrada.segundo << ', Nombre: ' << entrada.primera << std::endl;
    }

    devolver 0 ;
}

 
En este ejemplo de código C++, estamos trabajando con un vector de pares para almacenar y manipular los datos relacionados con las personas, específicamente sus nombres y edades. Inicializamos un vector llamado “información de pares” dentro de la función main(). Posteriormente, completamos este vector con tres pares, cada uno de los cuales contiene el nombre y la edad de una persona distinta, utilizando la función 'push_back' y 'std::make_pair' para una creación de pares eficiente.

Enviamos la 'Información original' a la consola. Esto implica iterar a través del vector de 'información' e imprimir los componentes de cada par. Luego, utilizamos el algoritmo 'std::sort' para reorganizar el vector 'info' según el operador de comparación predeterminado para pares que compara el primer elemento de cada par (en este caso, los nombres). Después de la operación de clasificación, volvemos a iterar a través del vector de 'información' modificado imprimiendo la información ordenada. Esta vez, el resultado enfatiza el ordenamiento por edad, ilustrando el resultado del proceso de clasificación.

Ejemplo 3: combinación de vectores de diferentes tipos

Es posible que se encuentre con algunas situaciones en las que deba combinar información de dos vectores. Un vector de pares puede ayudar a mantener la asociación entre elementos de los dos vectores.

#incluir
#incluir

ent principal ( ) {
estándar::vector < std::cadena > ciudades = { 'Nueva York' , 'París' , 'Tokio' } ;
estándar::vector < En t > poblaciones = { 8175133 , 2140526 , 37435191 } ;

estándar::vector < std::par < std::cadena, int >> pares de población de ciudades;

    para ( tamaño_t i = 0 ; i < estándar::mínimo ( ciudades.tamaño ( ) , poblaciones.tamaño ( ) ) ; ++yo ) {
cityPopulationPairs.push_back ( { ciudades [ i ] , poblaciones [ i ] } ) ;
    }

std::cout << 'Pares ciudad-población:' << std::endl;
    para ( constante automática & par: ciudadPoblaciónPares ) {
std::cout << 'Ciudad: ' << par.primero << ', Población: ' << par.segundo << std::endl;
    }

    devolver 0 ;
}

 
En la función 'principal' del código, se declaran dos vectores: 'ciudades' para almacenar los nombres de las ciudades y 'poblaciones' para almacenar los valores de población correspondientes.

Se define un tercer vector, “cityPopulationPairs”, para almacenar los pares de ciudades y sus respectivas poblaciones. Cada par es “std::pair” donde “std::string” representa el nombre de la ciudad y “int” representa la población. Luego utilizamos una iteración del bucle 'for' sobre los vectores (ciudades y poblaciones) usando 'std::min' para garantizar que el bucle no acceda a los elementos más allá del menor de los dos tamaños de vector. Dentro del bucle, se crean pares de información ciudad-población y se agregan al vector 'cityPopulationPairs'.

Después de combinar la información, se utiliza otro bucle 'for' para recorrer los pares almacenados en 'cityPopulationPairs'. Luego, los datos combinados se muestran en la salida estándar usando “std::cout”, representando claramente cada ciudad y su población correspondiente.

Ejemplo 4: encontrar los valores máximo y mínimo

Identificar los valores mínimo y máximo dentro de un conjunto de datos es un requisito común en operaciones algorítmicas y estadísticas. Podemos usar un vector de pares para realizar un seguimiento de los valores máximo y mínimo en una secuencia:

#incluir
#incluir
#incluir

ent principal ( ) {
estándar::vector < En t > números = { 5 , 12 , 18 , 3 , 7 , 4 , 33 } ;

estándar::vector < std::par < tu, tu >> minMaxPairs;

std::ordenar ( numeros.comenzar ( ) , números.fin ( ) ) ;

minMaxPairs.push_back ( { numeros.frente ( ) , números.volver ( ) } ) ;

std::cout << 'Pares mínimo-máximo:' << std::endl;
    para ( constante automática & par: minMaxPairs ) {
std::cout << 'Mín: ' << par.primero << ', Máximo: ' << par.segundo << std::endl;
    }

    devolver 0 ;
}

 
El código C++ proporcionado demuestra el proceso de encontrar los valores mínimo y máximo en un vector de números enteros y luego almacenar estos valores en un vector de pares. Un vector llamado 'números' se declara e inicializa inicialmente con un conjunto de números enteros. Para identificar eficientemente los valores mínimo y máximo en el conjunto de datos, el programa utiliza la función 'std::sort' de la biblioteca de algoritmos.

Esta función tiene como objetivo organizar los elementos en orden ascendente, simplificando el proceso de identificación de los valores mínimo y máximo en el conjunto de datos. La operación de clasificación se aplica al vector 'números' utilizando números.begin() y números.end() como parámetros de rango. Después del paso de clasificación, el programa crea un vector de pares, 'minMaxPairs', para almacenar los valores mínimo y máximo calculados. Luego, la función 'push_back' se emplea para agregar un solo par que contiene el primer (mínimo) y el último (máximo) elemento del vector de números ordenados. Finalmente, el programa genera el resultado iterando a través del vector 'minMaxPairs' y mostrando los valores mínimo y máximo.

Conclusión

En conclusión, el vector de pares de C++ emerge como una estructura de datos poderosa y flexible, agregando una capa de versatilidad a las tareas de programación. A través de una exploración detallada de su sintaxis y aplicaciones prácticas, hemos visto cómo este contenedor ayuda a organizar las asociaciones clave-valor, combinar la información de diferentes vectores y rastrear los valores mínimos y máximos.