Comment créer un vecteur de structures en C ++

Comment créer un vecteur de structures en C ++
Un vecteur de structures est une bonne structure de données pour une table de base de données. Le tableau suivant est une table de base de données de produits:
Productide ProductName Catégorie Nombre
1 Poste de télévision Divertissement dix
2 VCD Divertissement 20
3 Boîte de robe Ménage 30
4 Parfum Beauté 40
5 Banane Fruit 50
6 Poire Fruit 60

Il y a six lignes de données dans le tableau. La ligne d'en-tête (productId, productName, catégorie, etc.) n'est pas une ligne de données. À strictement parlant, la ligne d'en-tête n'est pas incluse (non fait partie) du vecteur des structures en c++. Ce tableau doit être considéré comme une liste de lignes du même type de ligne, à partir de la ligne 1. À strictement parler, la ligne d'en-tête ne peut pas être du même type que le reste des lignes de la table.

La chaîne de chaque cellule, de la ligne d'en-tête, décrit le reste de ses données de colonne. Cet article explique comment créer un vecteur C ++ de structures et son application à la création d'une table de base de données.

Contenu de l'article

- structure

- Construction du vecteur de structures

- Alimenter les données dans le vecteur des structures

- Problème de la ligne d'en-tête

- Conclusion

Structure

Une structure est similaire à une classe. Les objets sont instanciés à partir d'une structure. La définition d'une structure commence par le mot réservé, struct, suivi du nom généralisé (nom de classe) de la structure, puis une paire de contreventement, à l'intérieur desquelles sont des membres de structure. La définition se termine par un point-virgule après le support bouclé de clôture. Le code suivant est une structure pour chaque ligne de la table ci-dessus; La ligne d'en-tête n'est pas considérée ici:

Struct Row
non signé INT ProductId;
String productName;
catégorie de chaîne;
Numéro int non signé;
Float CostPrice;
Float Selltprice;
;

Notez que les membres du nom de produit et de la catégorie sont des chaînes. Cela signifie que la bibliothèque de chaînes doit être incluse dans le programme. Le nom généralisé pour la structure est, Row. Des objets tels que Row1, Row2, Row3, etc. peut être instancié de la ligne. Cependant, des noms spécifiques pour les objets de ligne ne sont pas nécessaires aux fins de cet article car la «ligne» sera l'argument du paramètre de modèle pour le vecteur.

Construction du vecteur de structures

La déclaration d'un vecteur de caractères peut être:

vecteur Vtr;

où char est l'argument du paramètre de modèle pour le vecteur, dont le nom est, vtr. De même, la déclaration pour le vecteur des lignes de structure serait:

vecteur vtr (7);

où «Row» est l'argument du paramètre de modèle pour le vecteur, dont le nom peut toujours être, vtr. Il y a six rangées et une ligne d'en-tête dans la table ci-dessus. Cela fait le nombre de lignes, 7. La ligne 0 est la ligne d'en-tête, qui peut ne pas avoir de ses propres données. Le nombre initial de lignes peut être indiqué dans la déclaration de vecteur de structures.

Afin de coder un vecteur dans un programme C ++, la bibliothèque vectorielle doit être incluse dans le programme. La tête du programme de cet article devrait être:

#inclure
#inclure
#inclure
Utilisation de Namespace Std;

Dans le programme, cela est suivi de la définition de la ligne struct, puis de la déclaration du vecteur des lignes de structure avant la fonction principale C ++.

Nourrir les données au vecteur des structures

Afin d'accéder à un élément de la structure vectorielle de structures bidimensionnelle, commencez par le nom du vecteur, e.g., vtr. Le est suivi par le numéro d'indice dans les crochets, qui est suivi d'un point, puis du nom de la colonne, e.g., Productide. Le code suivant dans la fonction principale C ++ alimenterait les données en lignes de la ligne 1 à la ligne 6:

VTR [1].ProductId = 1; VTR [1].ProductName = "TV Set"; VTR [1].Catégorie = "divertissement"; VTR [1].Nombre = 10;
VTR [2].ProductId = 2; VTR [2].ProductName = "VCD"; VTR [2].Catégorie = "divertissement"; VTR [2].Nombre = 20;
VTR [3].ProductId = 3; VTR [3].ProductName = "Cabille Box"; VTR [3].Catégorie = "ménage"; VTR [3].Nombre = 30;
VTR [4].ProductId = 4; VTR [4].ProductName = "Perfume"; VTR [4].Catégorie = "beauté"; VTR [4].Nombre = 40;
VTR [5].ProductId = 5; VTR [5].ProductName = "Banana"; VTR [5].Catégorie = "fruit"; VTR [5].Nombre = 50;
VTR [6].ProductId = 6; VTR [6].ProductName = "Pear"; VTR [6].Catégorie = "fruit"; VTR [6].Nombre = 60;

Après ce segment de code, le segment de code suivant dans la fonction principale C ++ afficherait toutes les valeurs cellulaires de la structure bidimensionnelle:

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

1, téléviseur, divertissement, 10

2, VCD, divertissement, 20

3, boîte de robe, ménage, 30

4, parfum, beauté, 40

5, banane, fruits, 50

6, poire, fruit, 60

Une boucle pour imprimer toutes les valeurs des cellules. La boucle pour itératerait sur les lignes, à partir de l'indice 1. La boucle pour ne ferait aucune ligne, car différentes colonnes ont des noms différents, et chaque colonne peut être identifiée par son nom.

Problème de la ligne d'en-tête

La ligne d'en-tête est à l'index zéro. La ligne d'en-tête se compose de toutes les chaînes, mais le reste des lignes, ne dispose pas de colonnes de chaîne. Eh bien, la ligne d'en-tête comme une chaîne est:

"ProductId, ProductName, catégorie, numéro"

La deuxième colonne de la structure bidimensionnelle prend une chaîne. Ainsi, toute cette chaîne d'en-tête peut être placée dans la deuxième cellule de la ligne 0. Le reste des cellules de la ligne 0 aura leurs valeurs par défaut. Par exemple, la valeur par défaut d'une variable int est 0.

Le code peut être écrit pour séparer cette chaîne d'en-tête dans ses chaînes d'en-tête de colonne pour l'affichage de l'ensemble du tableau, y compris la ligne d'en-tête, mais cela n'est pas abordé dans cet article.

Faire la deuxième cellule de la ligne 0 a toute la chaîne d'en-tête est simple comme suit:

vtr [0].ProductName = "ProductId, ProductName, catégorie, numéro";

Remarque l'index de 0 pour la ligne 0. La lecture de tout comme une chaîne est également simple comme suit:

String str = vtr [0].ProductName;
couter << str << endl;

La sortie doit être:

ProductId, ProductName, catégorie, numéro

La séparation de la chaîne entière en chaînes d'en-tête de colonne peut être un problème - c'est une discussion pour une autre fois.

Conclusion

Pour créer un vecteur de structures, définissez la structure, avec un nom généralisé (classe). Faire l'argument du modèle du vecteur d'intérêt, le nom généralisé de la structure. Accédez à chaque cellule de la structure bidimensionnelle avec la syntaxe, Vtr [i].nom de colonne.