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 :

Choix tableau 1D en C ou 1D en C++


Sujet :

C++

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2014
    Messages : 374
    Points : 47
    Points
    47
    Par défaut Choix tableau 1D en C ou 1D en C++
    Bonjours à tous,

    Je suis sous l'IDE "QtCreator" en ce moment. Je me demande s'il faut que je déclare un tableau en C (type double de 2048 éléments en moyenne) ou C++ via la classe array (statique) ou vector (dynamique).

    Un critère serait la vitesse de traitement et l'aspect objet pour ne pas que la partie traitement des données prenne le dessus en terme de temps vis à vis de l'interface du logiciel.

    Aussi un critère de place, une déclaration de tableau en C serait moins lourd qu'un objet d'une classe comme array ou vector.

    Merci d'avance

  2. #2
    Membre chevronné
    Avatar de imperio
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    855
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 855
    Points : 2 177
    Points
    2 177
    Par défaut
    2048 éléments c'est absolument ridicule. Tu es en C++, utilise donc un vector, cela n'aurait aucun sens de t'embêter avec la mémoire, ça serait contre-productif.

    Et comme dit dans ma signature : "Les optimisations prématurées sont la racine de tous les maux".

  3. #3
    Membre émérite Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 047
    Points : 2 251
    Points
    2 251
    Par défaut
    Salut,

    Je me demande s'il faut que je déclare un tableau en C (type double de 2048 éléments en moyenne) ou C++ via la classe array (statique) ou vector (dynamique)
    Array est un tableau C/C++ "déguisé" statique ( pas de new/malloc) plus sécuritaire.
    Vector est un tableau C/C++ "déguisé" dynamique ( new/malloc ) plus sécuritaire.

    Aussi un critère de place, une déclaration de tableau en C serait moins lourd qu'un objet d'une classe comme array ou vector.
    Non, sinon on utiliserait que des tableaux en C dans le jeu vidéo, ce qui est loin d'être le cas... Le compilateur fera un meilleur travaille que toi pour les optimiser tout ça.

    Bref comme le dis imperio, cherche pas à optimiser tant que tu n'en à pas besoin...

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2014
    Messages : 374
    Points : 47
    Points
    47
    Par défaut
    Okey, je vais utiliser vector ou array.

    Par contre je dispose d'un tableau de double simple en C à l'acquisition.

    Il faudrait que je le convertisse en array ou en vector. A voir pour les manipulations ...

    Il ne devrait pas y avoir de souci de ce côté la je pense.

  5. #5
    Expert confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Points : 4 442
    Points
    4 442
    Par défaut
    Hello,

    Citation Envoyé par joffrey575 Voir le message
    Un critère serait la vitesse de traitement et l'aspect objet pour ne pas que la partie traitement des données prenne le dessus en terme de temps vis à vis de l'interface du logiciel.

    Aussi un critère de place, une déclaration de tableau en C serait moins lourd qu'un objet d'une classe comme array ou vector.
    Le seul critère ici c'est : "type double de 2048 éléments en moyenne".

    Il faut connaitre la taille maximale d'un tableau pour utiliser std::array.
    Si tes tableaux font en moyenne 2048 éléments, mais que de temps en temps tu en as un de 500k éléments alors c'est un std::vector qu'il te faut, si tu sais que dans tous les cas tes tableaux auront toujours exactement 2048 éléments alors un std::array est utilisable.

  6. #6
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2014
    Messages : 374
    Points : 47
    Points
    47
    Par défaut
    Dans le meilleur des cas, j'aimerais faire un compatibilité avec plusieurs systèmes.

    Ils possèdent chacun une taille particulière.

    Une fois l'information acquise, le tableau ne changera pas de taille mais je ne connais pas la taille à l'avance.

    Donc je pense que c'est tout de même dynamique!

  7. #7
    Membre émérite
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Points : 2 466
    Points
    2 466
    Par défaut
    Citation Envoyé par joffrey575 Voir le message
    Une fois l'information acquise, le tableau ne changera pas de taille mais je ne connais pas la taille à l'avance.
    Dans ce cas, je suggère std::vector construit avec std::vector::vector(size_type N) ; voir son constructeur (2) sur cppreference.

  8. #8
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2014
    Messages : 374
    Points : 47
    Points
    47
    Par défaut
    J’essaie ça dès ce soir. Merci pour vos réponses

Discussions similaires

  1. Choix aléatoire dans un tableau
    Par jacko2 dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 04/03/2008, 10h37
  2. Choix aléatoire d'un élément d'un tableau
    Par maxlegrand dans le forum Langage
    Réponses: 1
    Dernier message: 11/12/2007, 00h24
  3. Choix d'une structure pour une liste de tableau d'ansistring
    Par kurkaine dans le forum C++Builder
    Réponses: 5
    Dernier message: 11/05/2007, 07h36
  4. Réponses: 2
    Dernier message: 24/05/2006, 19h26

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