IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Manipuler multi dimension tab comme 1 dimension


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    ok
    Inscrit en
    Octobre 2018
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : ok

    Informations forums :
    Inscription : Octobre 2018
    Messages : 39
    Par défaut Manipuler multi dimension tab comme 1 dimension
    Bonjour,

    est il possible de manipuler un tableau multi dimension comme s'il s'agissait d'un tableau 1 dimension ?

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 29
    Par défaut
    Oui, il suffit de trouver une fonction qui fait le passage entre les dimensions.

    Exemple pour tableau de taille N_X x N_Y :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    index(x, y) = x * N_Y + y
    Exemple pour tableau de taille N_X x N_Y x N_Z :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    index(x, y, z) = (x * N_Y + y) * N_Z + z
    La manière de calculer l'index peut avoir un impact direct sur les performances. Avec le premier exemple, si on fait varier x avec y constant, on aura plus de chance de faire des cache-miss car on va faire des sauts de N_Y (fois la taille de la données enregistrée en octets) dans la mémoire. La manière de traduire l'index selon l'utilisation qui en est faite est donc importante.

  3. #3
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 502
    Par défaut
    Le plus simple, c'est d'avoir un tableau mono-dimensionnel et de lui adjoindre une API multi-dimensionnel via une encapsulation dans une classe, type matrice ou tenser par exemple.

  4. #4
    Membre actif

    Homme Profil pro
    Site Reliability Engineer
    Inscrit en
    Janvier 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Site Reliability Engineer
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2013
    Messages : 57
    Billets dans le blog
    3
    Par défaut
    Bonjour, à mon avis l'utilisation d'une map sera plus efficace. Tu a toujours une très bonne image qui vas te permettre de choisir un conteneur adapté à tes besoins.
    Nom : e3e56c8994876cf1552dbbdddaf5891d.png
Affichages : 204
Taille : 82,3 Ko
    N'hésitez pas à consulter le site http://cppreference.com/ ou encore la faq c++ ici

Discussions similaires

  1. Pointer un tab multi-dimension
    Par FabTheGeek dans le forum Débuter
    Réponses: 2
    Dernier message: 21/05/2009, 21h00
  2. [Tableaux] Tri d'un tableau multi-dimensions
    Par lodan dans le forum Langage
    Réponses: 6
    Dernier message: 05/12/2006, 10h08
  3. Réponses: 4
    Dernier message: 29/11/2006, 12h00
  4. Réponses: 3
    Dernier message: 06/10/2006, 15h46
  5. [Tableaux] Différence tableau multi dimension
    Par rdams dans le forum Langage
    Réponses: 3
    Dernier message: 20/04/2006, 11h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo