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 :

problème de tableau


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meuse (Lorraine)

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 317
    Par défaut problème de tableau
    je suis en train de réaliser un programme qui nécessite une très grande quantité de données extraites à partir d'un fichier et que je dois traiter. pour cela j'ai déclaré un tableau de string [1000] mais je ne peux pas dépasser cette limite de taille. Y'a-t-il un moyen qui me permet de dépasser cette limite car à chaque fois que j'essaie d'agrandir la taille du tableau le programme cesse de fonctionner et si je garde cette limite le programme retourne de faux résultats??

  2. #2
    Membre Expert Avatar de Ehonn
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    788
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

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

    Informations forums :
    Inscription : Février 2012
    Messages : 788
    Par défaut
    Tu peux utiliser un std::vector<string> et sa méthode push_back.
    http://www.cplusplus.com/reference/v...tor/push_back/

  3. #3
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Bonjour,

    Citation Envoyé par Ehonn Voir le message
    Tu peux utiliser un std::vector<string> et sa méthode push_back.
    http://www.cplusplus.com/reference/v...tor/push_back/
    Ne pas oublier d'appeler std::reserve quand on veut insérer plusieurs éléments.

  4. #4
    Membre Expert Avatar de Ehonn
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    788
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

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

    Informations forums :
    Inscription : Février 2012
    Messages : 788
    Par défaut
    Citation Envoyé par Neckara Voir le message
    Bonjour,
    Ne pas oublier d'appeler std::reserve quand on veut insérer plusieurs éléments.
    Oui mais je voulais pas "complexifier" le truc maintenant.
    En pus std::reserve ne permet d'«insérer» plusieurs éléments (:o) c'est mal dit. std::reserve permet de "réserver" l'espace afin que le push_back ne fasse pas de réallocation.

    Il ne connaît pas la taille ici (sinon, le tableau aurait suffit (selon la taille de la pile) / on aurait donner la taille à std::vector) (il faudrait parcourir deux fois le fichier). Laissons std::vector avoir un comportement "pas trop débile" lorsqu'il fait les réallocations.

  5. #5
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Citation Envoyé par Ehonn Voir le message
    En pus std::reserve ne permet d'«insérer» plusieurs éléments (:o) c'est mal dit. std::reserve permet de "réserver" l'espace afin que le push_back ne fasse pas de réallocation.
    Pourtant je trouve ma phrase assez claire :
    "ne pas oublier d'appeler" => ne sous-entends pas de remplacer l'appel de push_back mais de rajouter un appel.
    "quand on veut" pas "pour" => on ne l'utilise pas dans un but d'insérer plusieurs éléments (donc ne remplace pas push_back) mais lorsqu'on le fait, sous-entends donc à côté des opérations d'insertions d'éléments.

    Après, la doc est là pour donner tous les renseignements nécessaire, je donne un nom de méthode, mais après c'est à lui d'aller faire le minimum de recherche par la suite (surtout que ce n'est pas dur à trouver).

    Sinon, il y a aussi std::resize qui peut être intéressant.

  6. #6
    Membre Expert Avatar de Ehonn
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    788
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

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

    Informations forums :
    Inscription : Février 2012
    Messages : 788
    Par défaut
    Je voulais juste dire que tu aurais pu être plus explicite

    Lorsqu'on lit un fichier, c'est pas évidement d'estimer la taille (sauf s'il y a des informations de ce genre dans le fichier).
    Dans le cas général (enregistrement des lignes) le push_back reste le plus simple et utiliser reserve ou resize est une optimisation prématurée (sauf si on a ce genre d'information dans le fichier).

    En revanche (edit) Dans le même style un shrink_to_fit (en C++11, ou un code équivalent pour la norme d'avant) à la fin des push_back peut être intéressant si on veut dupliquer plusieurs fois le vector résultat (il me semble que la copie d'un vector garde la capacité, à vérifier).

Discussions similaires

  1. Débutant en Javascript : problème de tableau !
    Par bluheim dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 06/11/2005, 15h03
  2. [XHTML] problème de tableau
    Par virgul dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 28/04/2005, 07h18
  3. Problème de tableau
    Par tom06440 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 26/04/2005, 20h30
  4. Problème de tableau
    Par krfa1 dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 08/02/2005, 11h09

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