Créer un tableau à 2 dimensions [perl] - Perl - Programmation
Marsh Posté le 05-06-2003 à 23:55:07
aline2003 a écrit : tu peux faire comme ça
|
c ca que j'ai utilisé
c parce quau départ javais en tete qu'un array en perl cétait nécessairement @array
Marsh Posté le 06-06-2003 à 07:25:05
suivant ton cas tu pourrais utiliser un tableau associatif (hashtable je crois)
Marsh Posté le 06-06-2003 à 09:54:51
Urd-sama a écrit : suivant ton cas tu pourrais utiliser un tableau associatif (hashtable je crois) |
Ecrit comme ça : $tableau{4}{14}, on fait en fait référence à un hash du nom de %tableau, et qui est en réalité un hash de hash, non un tableau à 2 dimensions.
pour un tableau à 2 dimensions, il faudrait employer par exemple une variable @tableau : $tableau[4][14]
imaginons que tu veuilles stocker les valeurs suivantes dans un tableau à deux dimensions, on a 2 lignes de 3 valeurs par ligne, chaque ligne servant d'index. Ci-dessous, un petit code d'exemple avec un tableau contenant ces valeurs et un hash :
Valeurs :
15,20,25
30,35,40
70,80,90
Code :
|
Dans mon exemple, @Array est un tableau à 2 dimensions. %Hash est un hash qui contient 3 hash ($Hash{1}, $Hash{2} et $Hash{3}), c'est un hash de hash.
Voilà en tout cas la notation pour les tableaux et les hachages. crochets pour les tableaux, accolades pour les hachages.
Marsh Posté le 06-06-2003 à 12:09:35
jai fait un tableau alors
jai my @value
et ensuite j'alimente en faisant $value[$i][$j] = ***
Marsh Posté le 07-06-2003 à 00:56:37
On peut aussi simuler des tableau à n dimensions avec une hash table
par exemple:
$a[5][12][24][2] => $a{"5 12 24 2"}
et pour l'iterer il suffit de faire un truc du genre:
for $x (0..10) {
for $y (0..10) {
for $z (0..10) {
for $k (0..10) {
$a{"$x $y $z $k"}....
Ca peut etre plus rapide que l'equivalent en tableau à plusieur dimensions (une hash table est seulement 15% plus lente qu'un tableau, et la on n'a k'un seul niveau!), mais ca peut egalement prendre plus de place en memoire (les hash tables on tendance à grossir de maniere non lineaire, en doublant leut taille par acoups...).
Mais le plus gros avantgae que je vois, et la raison pour laquelle je les utilise, est k'on peut faire un tie à un SDBM file par exemple, pour avoir un truc persistant sur disque, puisque l'on a k'un seul niveau, au lieu de devoir utiliser MLDBN qui est archi lent mais qui est le seul truc dispo pour avec les hash à plusieurs dimensions...
Marsh Posté le 05-06-2003 à 21:32:02
Je cherche à me créer un tableau à 2 dimensions
en C, je me déclarerais un int value[4][14];
mais en perl je ne sais pas comment le créer, et comment accéder à mes données une fois quil serait créé
merci