OVH Cloud OVH Cloud

Quelle structure pour une matrice?

20 réponses
Avatar
Pascal
Bonjour,

Je dois implémenter une matrice de 4 colonnes qui contient :
int | int | une lettre | int

Sa taille est fixe en hauteur.

Quelle structure me conseillez vous?
--
Pascal

10 réponses

1 2
Avatar
Olivier Azeau
Pascal wrote:
Bonjour,

Je dois implémenter une matrice de 4 colonnes qui contient :
int | int | une lettre | int

Sa taille est fixe en hauteur.


fixée à la compilation ou déterminée au run-time à la construction de la
structure ?

Quelle structure me conseillez vous?


Cela dépend fort probablement des opérations réalisées avec cette "matrice".

Avatar
Fabien LE LEZ
On Wed, 02 Feb 2005 22:10:38 +0100, Pascal :

Je dois implémenter une matrice de 4 colonnes qui contient :
int | int | une lettre | int


T'es sûr que c'est une matrice ?
Une matrice est un objet mathématique ; on peut additionner ou
multiplier deux matrices (sous réserve qu'elles ont des tailles
compatibles).

Dans ton cas, j'ai l'impression qu'il s'agit d'un bête tableau
d'objets :

struct ???
{
int ???;
int ???;
char ???;
int ???;
};

(Les "???" sont à remplacer par des noms explicites.)

La structure par défaut pour stocker ce genre d'objets est
std::vector<???>. Si pour une raison ou une autre vector<> ne convient
pas, tu peux commencer à chercher une autre solution.


--
;-)

Avatar
Fabien LE LEZ
On Wed, 02 Feb 2005 22:10:38 +0100, Pascal :

Date: Wed, 02 Feb 2005 22:10:38 +0100
NNTP-Posting-Date: 01 Feb 2005 22:11:33 MET


Commence par apprendre à régler l'horloge de ton PC...

Avatar
Pascal
On Wed, 02 Feb 2005 04:20:41 +0100, Fabien LE LEZ wrote:

On Wed, 02 Feb 2005 22:10:38 +0100, Pascal :
Dans ton cas, j'ai l'impression qu'il s'agit d'un bête tableau
d'objets :


Oui. mea culpa. Il s'agit d'un tableau à 3 colonnes. Mais y a rien de
mieux qu'une struct? Le problème avec un vector, c'est qu'il n'y a qu'une
dimension. J'en voudrais au moins 3 colonnes (et le nombre de lignes est
fixe, déterniné au moment de la création du tableau).

struct ???
{
int ???;
int ???;
char ???;
int ???;
};

(Les "???" sont à remplacer par des noms explicites.)

La structure par défaut pour stocker ce genre d'objets est
std::vector<???>. Si pour une raison ou une autre vector<> ne convient
pas, tu peux commencer à chercher une autre solution.


Avatar
Olivier Azeau
Pascal wrote:
On Wed, 02 Feb 2005 04:20:41 +0100, Fabien LE LEZ wrote:

On Wed, 02 Feb 2005 22:10:38 +0100, Pascal :
Dans ton cas, j'ai l'impression qu'il s'agit d'un bête tableau
d'objets :


Oui. mea culpa. Il s'agit d'un tableau à 3 colonnes. Mais y a rien
de

mieux qu'une struct?


Une 'class' peut etre ?

Le problème avec un vector, c'est qu'il n'y a qu'une
dimension. J'en voudrais au moins 3 colonnes (et le nombre de lignes
est

fixe, déterniné au moment de la création du tableau).


Mais tu veux faire quoi sur la 2eme dimension mis a part acceder aux
élements int, char ou autre ?

Le choix de la structure dépend de ce que tu veux faire avec ton
tableau.
Si par exemple tu as besoin d'une clef pour acceder a chacune des
lignes, le vector n'est pas forcément la meilleure solution.

Commence plutot par définir une classe qui représente ton ensemble de
données : quand tu te mettras a définir les opérations que tu veux
avoir sur cette classe, les contraintes sur la structure de stockage
sous-jacente devraient émerger...


Avatar
kanze
Pascal wrote:
On Wed, 02 Feb 2005 04:20:41 +0100, Fabien LE LEZ wrote:

On Wed, 02 Feb 2005 22:10:38 +0100, Pascal
: Dans ton cas, j'ai l'impression qu'il
s'agit d'un bête tableau d'objets :


Oui. mea culpa. Il s'agit d'un tableau à 3 colonnes. Mais y a
rien de mieux qu'une struct? Le problème avec un vector, c'est
qu'il n'y a qu'une dimension.


Mais tu peux avoir un vector de vector.

J'en voudrais au moins 3 colonnes (et le nombre de lignes est
fixe, déterniné au moment de la création du tableau).


vector< vector< int > > v( N, vector< int >( 3 ) ) ;

doit faire ton affaire.

--
James Kanze GABI Software http://www.gabi-soft.fr
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34


Avatar
Fabien LE LEZ
On Wed, 02 Feb 2005 14:53:02 +0100, Pascal :

Mais y a rien de
mieux qu'une struct?


Ben non, c'est a priori la solution canonique.

J'en voudrais au moins 3 colonnes


En gros, tu crois bon de représenter dans un programme les données
comme sur une feuille de papier ?


--
;-)

Avatar
Pascal
Fabien LE LEZ wrote:
On Wed, 02 Feb 2005 22:10:38 +0100, Pascal :


Date: Wed, 02 Feb 2005 22:10:38 +0100
NNTP-Posting-Date: 01 Feb 2005 22:11:33 MET



Commence par apprendre à régler l'horloge de ton PC...



arf! C'est fait. Désolé...

--
Pascal


Avatar
Pascal
Fabien LE LEZ wrote:

Ben non, c'est a priori la solution canonique.



Wai bof. Pas vraiment canonique. minimal/simpliste oui. Je pense qu'une
classe est ce qu'il y a de mieux, mais j'espérais trouver une struct
déjà toute faite. Ca me semble bizarre qu'il n'existe pas de structure
pour des tableaux à plusieurs colonnes????

En gros, tu crois bon de représenter dans un programme les données
comme sur une feuille de papier ?


?? Ba je crois bon de modéliser dans mon prog les données comme j'ai

besoin qu'elles soient.

--
Pascal

Avatar
Vincent Lascaux
Je dois implémenter une matrice de 4 colonnes qui contient :
int | int | une lettre | int

Sa taille est fixe en hauteur.

Quelle structure me conseillez vous?


Peux tu préciser le problème que tu veux résoudre, pour qu'on puisse te
répondre de facon plus appropriée ?

Merci

--
Vincent

1 2