Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Langue C

Structures de données en C++ : Construire des programmes efficaces avec tableaux, structures et plus

Les tableaux C/C++ vous permettent de définir des variables qui combinent plusieurs éléments de données du même type, mais la structure est un autre type de données défini par l'utilisateur qui vous permet de combiner des éléments de données de différents types.

Les structures sont utilisées pour représenter un enregistrement. Supposons que vous vouliez suivre vos livres dans une bibliothèque. Vous pourriez vouloir suivre les attributs suivants pour chaque livre :

Définition d'une structure

Pour définir une structure, vous devez utiliser l'instruction struct. L'instruction struct définit un nouveau type de données, avec plus d'un membre, pour votre programme. Le format de l'instruction struct est le suivant :

struct [structure_tag] {
    member_definition;
    member_definition;
    ...
    member_definition;
} [une_ou_plusieurs_variables_structure];

Le structure_tag est optionnel et chaque définition de membre est une définition de variable normale, comme int i; ou float f; ou toute autre définition de variable valide. À la fin de la définition de la structure, avant le point-virgule final, vous pouvez spécifier une ou plusieurs variables de structure mais c'est optionnel. Voici comment vous déclareriez la structure Book :

struct Books {
    char title[50];
    char author[50];
    char subject[100];
    int book_id;
} book;

Accès aux membres de structure

Pour accéder à n'importe quel membre d'une structure, nous utilisons l'opérateur d'accès aux membres (.). L'opérateur d'accès aux membres est codé comme un point entre le nom de la variable de structure et le membre de structure que nous souhaitons accéder. Vous utiliseriez le mot-clé struct pour définir des variables de type structure. Voici l'exemple pour expliquer l'utilisation de la structure :

#include <iostream>
#include <cstring>
using namespace std;

struct Books {
    char title[50];
    char author[50];
    char subject[100];
    int book_id;
};

int main() {
    struct Books Book1; // Déclare Book1 de type Book
    struct Books Book2; // Déclare Book2 de type Book
    // spécification livre 1
    strcpy(Book1.title, "Apprendre la programmation C++");
    strcpy(Book1.author, "Chand Miyan");
    strcpy(Book1.subject, "Programmation C++");
    Book1.book_id = 6495407;
    // spécification livre 2
    strcpy(Book2.title, "Facturation Telecom");
    strcpy(Book2.author, "Yakit Singha");
    strcpy(Book2.subject, "Telecom");
    Book2.book_id = 6495700;
    // Afficher info Book1
    cout << "Livre 1 titre : " << Book1.title << endl;
    cout << "Livre 1 auteur : " << Book1.author << endl;
    cout << "Livre 1 sujet : " << Book1.subject << endl;
    cout << "Livre 1 id : " << Book1.book_id << endl;
    // Afficher info Book2
    cout << "Livre 2 titre : " << Book2.title << endl;
    cout << "Livre 2 auteur : " << Book2.author << endl;
    cout << "Livre 2 sujet : " << Book2.subject << endl;
    cout << "Livre 2 id : " << Book2.book_id << endl;
    return 0;
}

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant :

Livre 1 titre : Apprendre la programmation C++
Livre 1 auteur : Chand Miyan
Livre 1 sujet : Programmation C++
Livre 1 id : 6495407
Livre 2 titre : Facturation Telecom
Livre 2 auteur : Yakit Singha
Livre 2 sujet : Telecom
Livre 2 id : 6495700

Structures comme arguments de fonction

Vous pouvez passer une structure comme argument de fonction de manière très similaire à comme vous passez n'importe quelle autre variable ou pointeur. Vous accéderiez aux variables de structure de la même manière que dans l'exemple ci-dessus :

#include <iostream>
#include <cstring>
using namespace std;

void printBook(struct Books book);

struct Books {
    char title[50];
    char author[50];
    char subject[100];
    int book_id;
};

int main() {
    struct Books Book1;
    struct Books Book2;
    // book 1 specification
    strcpy(Book1.title, "Apprendre la programmation C++");
    strcpy(Book1.author, "Chand Miyan");
    strcpy(Book1.subject, "Programmation C++");
    Book1.book_id = 6495407;
    // book 2 specification
    strcpy(Book2.title, "Facturation Telecom");
    strcpy(Book2.author, "Yakit Singha");
    strcpy(Book2.subject, "Telecom");
    Book2.book_id = 6495700;
    // Print Book1 info
    printBook(Book1);
    // Print Book2 info
    printBook(Book2);
    return 0;
}

void printBook(struct Books book) {
    cout << "Titre livre : " << book.title << endl;
    cout << "Auteur livre : " << book.author << endl;
    cout << "Sujet livre : " << book.subject << endl;
    cout << "ID livre : " << book.book_id << endl;
}

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant :

Titre livre : Apprendre la programmation C++
Auteur livre : Chand Miyan
Sujet livre : Programmation C++
ID livre : 6495407
Titre livre : Facturation Telecom
Auteur livre : Yakit Singha
Sujet livre : Telecom
ID livre : 6495700

Pointeurs vers structures

Vous pouvez définir des pointeurs vers des structures de manière très similaire à comme vous définissez un pointeur vers n'importe quelle autre variable comme suit :

struct Books *struct_pointer;

Maintenant, vous pouvez stocker l'adresse d'une variable de structure dans le pointeur défini ci-dessus. Pour trouver l'adresse d'une variable de structure, placez l'opérateur & avant le nom de la structure comme suit :

struct_pointer = &Book1;

Pour accéder aux membres d'une structure en utilisant un pointeur vers cette structure, vous devez utiliser l'opérateur -> comme suit :

struct_pointer->title;

Réécrivons l'exemple ci-dessus en utilisant un pointeur de structure, j'espère que cela sera facile pour vous de comprendre le concept :

#include <iostream>
#include <cstring>
using namespace std;

void printBook(struct Books *book);

struct Books {
    char title[50];
    char author[50];
    char subject[100];
    int book_id;
};

int main() {
    struct Books Book1;
    struct Books Book2;
    // Book 1 specification
    strcpy(Book1.title, "Apprendre la programmation C++");
    strcpy(Book1.author, "Chand Miyan");
    strcpy(Book1.subject, "Programmation C++");
    Book1.book_id = 6495407;
    // Book 2 specification
    strcpy(Book2.title, "Facturation Telecom");
    strcpy(Book2.author, "Yakit Singha");
    strcpy(Book2.subject, "Telecom");
    Book2.book_id = 6495700;
    // Print Book1 info, passing address of structure
    printBook(&Book1);
    // Print Book2 info, passing address of structure
    printBook(&Book2);
    return 0;
}

// Cette fonction accepte un pointeur vers structure comme paramètre.
void printBook(struct Books *book) {
    cout << "Titre livre : " << book->title << endl;
    cout << "Auteur livre : " << book->author << endl;
    cout << "Sujet livre : " << book->subject << endl;
    cout << "ID livre : " << book->book_id << endl;
}

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant :

Titre livre : Apprendre la programmation C++
Auteur livre : Chand Miyan
Sujet livre : Programmation C++
ID livre : 6495407
Titre livre : Facturation Telecom
Auteur livre : Yakit Singha
Sujet livre : Telecom
ID livre : 6495700

Le mot-clé typedef

Il existe un moyen plus simple de définir des structures ou vous pourriez « aliaser » les types que vous créez. Par exemple :

typedef struct {
    char title[50];
    char author[50];
    char subject[100];
    int book_id;
} Books;

Maintenant, vous pouvez utiliser Books directement pour définir des variables de type Books sans utiliser le mot-clé struct. Voici l'exemple :

Books Book1, Book2;

Vous pouvez utiliser le mot-clé typedef pour des non-structures également comme suit :

typedef long int *pint32;
pint32 x, y, z;

x, y et z sont tous des pointeurs vers des entiers longs.

Langue C

  1. Comprendre les types de données C++ : Fondamentaux, modificateurs et bonnes pratiques
  2. Maîtriser les opérateurs C++ : Guide complet avec exemples pratiques
  3. Commentaires C++ : Bonnes pratiques pour un code lisible et maintenable
  4. Maîtriser le type char en C++ : Déclaration, ASCII et techniques de conversion
  5. Révolution du stockage de données : nanostructures magnétiques de nouvelle génération avec capes d'invisibilité
  6. Structures de données Java : Exploration des classes de base et Collections Framework
  7. Maîtriser les structures en C : Organiser des données complexes efficacement
  8. Typedef en C : Simplifier votre code avec des noms de types personnalisés
  9. Structures de données en C++ : Construire des programmes efficaces avec tableaux, structures et plus