Cómo crear un vector de estructuras en C ++

Cómo crear un vector de estructuras en C ++
Un vector de estructuras es una buena estructura de datos para una tabla de base de datos. La siguiente tabla es una tabla de base de datos de productos:
ID del Producto Nombre del producto Categoría Número
1 Televisor Entretenimiento 10
2 VCD Entretenimiento 20
3 Caja de vestir Familiar 30
4 Perfume Belleza 40
5 Banana Fruta 50
6 Pera Fruta 60

Hay seis filas de datos en la tabla. La fila de encabezado (ProductID, ProductName, Categoría, etc.) no es una fila de datos. Estrictamente hablando, la fila de encabezado no se incluye (no se hace parte del vector de las estructuras en C++. Esta tabla debe considerarse como una lista de filas del mismo tipo de fila, comenzando desde la fila 1. Estrictamente hablando, la fila del encabezado no puede ser del mismo tipo que el resto de las filas en la mesa.

La cadena en cada celda, de la fila del encabezado, describe el resto de los datos de su columna. Este artículo explica cómo crear un vector C ++ de estructuras y su aplicación para crear una tabla de base de datos.

Contenido del artículo

- estructura

- Construcción de vector de estructuras

- Alimentar datos en el vector de estructuras

- Problema de la fila de encabezado

- Conclusión

Estructura

Una estructura es similar a una clase. Los objetos se instancian desde una estructura. La definición de una estructura comienza con la palabra reservada, estructura, seguida del nombre generalizado (nombre de clase) de la estructura, luego un par de aparatos ortopédicos, dentro de los cuales hay miembros de estructura. La definición termina con un punto y coma después del cierre del soporte rizado. El siguiente código es una estructura para cada fila de la tabla anterior; La fila de encabezado no se considera aquí:

struct fila
Unsigned int productid;
String ProductName;
categoría de cadena;
Número ints de unsigned;
FLOAT COSTPRICE;
FLOAT SELLINGPRICE;
;

Tenga en cuenta que los miembros del nombre del producto y la categoría son cadenas. Esto significa que la biblioteca de cadenas debe incluirse en el programa. El nombre generalizado para la estructura es, fila. Objetos como Row1, Row2, Row3, etc. puede ser instanciado desde la fila. Sin embargo, los nombres específicos para los objetos de fila no son necesarios para el propósito de este artículo porque la "fila" será el argumento del parámetro de plantilla para el vector.

Construcción de vector de estructuras

La declaración de un vector de caracteres puede ser:

vector VTR;

Donde Char es el argumento del parámetro de plantilla para el vector, cuyo nombre es, VTR. Del mismo modo, la declaración para el vector de las filas de estructura sería:

vector VTR (7);

donde "fila" es el argumento del parámetro de plantilla para el vector, cuyo nombre aún puede ser, VTR. Hay seis filas y una fila de encabezado en la tabla anterior. Esto hace que el número de filas, 7. La fila 0 es la fila de encabezado, que puede no tener ninguno de sus propios datos. El número inicial de filas se puede indicar en la Declaración de Vector de Estructos.

Para codificar un vector en un programa C ++, la biblioteca vectorial debe incluirse en el programa. El jefe del programa de este artículo debería ser:

#incluir
#incluir
#incluir
usando el espacio de nombres STD;

En el programa, esto es seguido por la definición de la fila de estructura, y luego la declaración del vector de las filas de estructura antes de la función principal de C ++.

Alimentación de datos al vector de estructuras

Para acceder a un elemento en la estructura bidimensional de vectores de estructuras, comience con el nombre del vector, E.gramo., VTR. El número de subíndice sigue los soportes cuadrados, que es seguido por un punto, y luego el nombre de la columna, e.gramo., ID del Producto. El siguiente código en la función principal de C ++ alimentaría los datos en filas de la fila 1 a la fila 6:

VTR [1].ProductID = 1; VTR [1].ProductName = "TV Set"; VTR [1].Categoría = "entretenimiento"; VTR [1].Número = 10;
VTR [2].ProductID = 2; VTR [2].ProductName = "VCD"; VTR [2].Categoría = "entretenimiento"; VTR [2].Número = 20;
VTR [3].ProductID = 3; VTR [3].ProductName = "Caja de vestir"; VTR [3].Categoría = "hogar"; VTR [3].Número = 30;
VTR [4].ProductID = 4; VTR [4].ProductName = "Perfume"; VTR [4].Categoría = "belleza"; VTR [4].Número = 40;
VTR [5].ProductID = 5; VTR [5].ProductName = "Banana"; VTR [5].Categoría = "fruta"; VTR [5].Número = 50;
VTR [6].ProductID = 6; VTR [6].ProductName = "Pear"; VTR [6].Categoría = "fruta"; VTR [6].Número = 60;

Después de este segmento de código, el siguiente segmento de código en la función principal de C ++ mostraría todos los valores celulares de la estructura bidimensional:

cout << vtr[1].ProductID <<", "; cout << vtr[1].ProductName <<", "; cout << vtr[1].Category <<", "; cout << vtr[1].Number <cout << vtr[2].ProductID <<", "; cout << vtr[2].ProductName <<", "; cout << vtr[2].Category <<", "; cout << vtr[2].Number <cout << vtr[3].ProductID <<", "; cout << vtr[3].ProductName <<", "; cout << vtr[3].Category <<", "; cout << vtr[3].Number <cout << vtr[4].ProductID <<", "; cout << vtr[4].ProductName <<", "; cout << vtr[4].Category <<", "; cout << vtr[4].Number <cout << vtr[5].ProductID <<", "; cout << vtr[5].ProductName <<", "; cout << vtr[5].Category <<", "; cout << vtr[5].Number <cout << vtr[6].ProductID <<", "; cout << vtr[6].ProductName <<", "; cout << vtr[6].Category <<", "; cout << vtr[6].Number <La salida es:

1, televisor, entretenimiento, 10

2, VCD, entretenimiento, 20

3, caja de vestir, hogar, 30

4, perfume, belleza, 40

5, plátano, fruta, 50

6, pera, fruta, 60

Se puede usar un bucle para imprimir todos los valores de las celdas. El for-bucle iteraría sobre las filas, comenzando desde el índice 1. El for-loop no iteraría ninguna fila, porque diferentes columnas tienen diferentes nombres, y cada columna se puede identificar por su nombre.

Problema de la fila de encabezado

La fila de encabezado está en el índice cero. La fila de encabezado consta de todas las cadenas, pero el resto de las filas, no tienen solo columnas de cadena. Bueno, la fila de encabezado como una cadena es:

"ProductID, ProductName, Categoría, Número"

La segunda columna de la estructura bidimensional toma una cadena. Entonces, toda esta cadena de encabezado se puede colocar en la segunda celda de la fila 0. El resto de las celdas en la fila 0 tendrán sus valores predeterminados. Por ejemplo, el valor predeterminado de una variable int es 0.

El código se puede escribir para separar esta cadena de encabezado en las cadenas de encabezado de columna para la visualización de toda la tabla, incluida la fila del encabezado, pero eso no se aborda en este artículo.

Hacer la segunda celda de la fila 0 tiene la cadena de encabezado completa es simple de la siguiente manera:

VTR [0].ProductName = "ProductId, ProductName, Categoría, Número";

Tenga en cuenta el índice de 0 para la fila 0. Leer todo como una cadena también es simple de la siguiente manera:

cadena str = vtr [0].Nombre del producto;
cout << str << endl;

La salida debe ser:

ProductID, ProductName, Categoría, Número

Separar toda la cadena en las cadenas de encabezado de columna puede ser un problema, es decir, la discusión por otro tiempo.

Conclusión

Para crear un vector de estructuras, defina la estructura, con un nombre generalizado (de clase). Hacer el argumento de la plantilla del vector de interés, el nombre generalizado de la estructura. Acceda a cada celda de la estructura bidimensional con la sintaxis, VTR [i].nombre de columna.