Initialisation structure

Initialisation structure

by Martina Venturini -
Number of replies: 1

Bonjour,

j'ai rencontré un problème avec l'initialisation d'une structure. Lorsque j'initialise ma structure dans le main(), j'ai pour dernier champ de la structure un vector<vector<int>> dont la taille est définie par nbL, nbC qui précèdent dans la structure. Par conséquence, je ne peux pas définir la taille du tableau et la seule manière que j'ai touvé pour résoudre le problème c'est de ne pas initialiser le dernier champ et de le modifier par la suite par le moyen d'une affectation. Est-ce que cela serait accepté? Si non, est-ce que vous pourriez m'indiquer une solution alternative? Voici le morceau de code concerné:

struct Picture {
    string format;
    int nbC;
    int nbL;
    int max;
    image im;
};


int main()

{

....

Picture pict = {lire_format(), lire_nombre(), lire_nombre(), lire_nombre()};
    image image_source(pict.nbL,vector<int>(pict.nbC));
    pict.im = image_source;

}

Merci de votre aide. Meilleures salutations,

Martina Venturini

In reply to Martina Venturini

Re: Initialisation structure

by Pierre Pravin Oppliger -

Bonsoir,

Il est préférable d'éviter d'effectuer des copies de tableaux. Ici tu crées un tableau pour simplement le copier ailleurs. C'est une mauvaise idée car tu ralentis et compliques inutilement ton programme.

Pourquoi ? Ne pas lire les paramètres et les stocker dans des variables indépendantes avant de créer ta structure Picture ?

Quelque chose comme:

string format = lire_format();
int nbC = lire_nombre();
int nbL = lire_nombre();
int max = lire_nombre();
Picture pict = {format, nbC, nbL, max, vector<vector<int>>(nbL, vector<int>(nbC))};

Cordialement
Pierre Oppliger