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 :

taille tableau trop grande


Sujet :

C++

  1. #1
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 98
    Par défaut taille tableau trop grande
    Bonjour a tous .

    voila je programme ( novice ) en c sous wxdev et je voudrais savoir comment faire pour utiliser des tableau de grande taille car quand je depasse une certaine taille j'ai un message d'erreur de xp ,hors je sais qu'il y a une option ou une astuce qui permet d'utiliser des tableaux de grande taille mais je sais pas comment faire .
    j'ai 2 go de mem a titre d'information et dans mon programme j'ai besois de 10 tableau de de type tab[50000][10] oui c'est assez important comment faire pour utiliser le maximum de ma memoire car actuellement je ne peut pas depasser 2 tableau de [20000][7] + 1 tableau de [7000][7] merci de votre aide
    cordialement

  2. #2
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 633
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 633
    Par défaut
    Salut,

    Déjà, je te conseillerais de réfléchir au fait que tu aies *réellement* besoin des dix tableaux complets à un moment donné...

    En effet, je serais surpris que tu puisse, à un moment T de ton programme, avoir besoin de l'ensemble des 5.000.000 (10 * 50000 * 10) d'informations que tu voudrais pouvoir stocker en mémoire avec tes tableaux

    Ensuite, il faut se rappeler des restrictions sur les tableaux: un tableau est un ensemble d'informations contigües en mémoire, et cela nécessite donc d'être sur de trouver suffisemment de mémoire libre pour contenir toutes les informations.

    Si, pour ton malheur, tu as besoin de 500.000 fois l'espace nécessaire pour représenter toutes tes informations et la mémoire est "fragmentée" au point de ne trouver que 499.999 fois l'espace nécessaire de manière contigüe, ton programme est destiné à planter lamentablement

    Peut être pourrais tu envisager de réserver les 500.000 espaces sous une forme plus proche de 50.000 * 10 espaces (selon le principe qu'il est sans doute plus facile de trouver 50.000 fois l'espace pour 10 information que une seule fois l'espace pour 500.000 )

    Peut être le tableau en lui-même n'est il pas la meilleure des solutions, mais une solutions basées sur une structure dynamique (pile, file, liste) est-elle meilleure

    Avec les informations que tu donnes, il est difficile de te donner une solution précise, et je me contente donc de te fournir des pistes à suivre... Si tu veux une aide plus précise, je ne peux que t'inciter à réfléchir à ce conseil:
    aide nous à t'aider: plus tu nous fournira des indications claires sur ce que tu veux, plus tu auras de chances d'avoir une aide rapide et efficace
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 98
    Par défaut merci koala01
    merci de ta reponse , mais tu as raison j'ai verifié mon prog et je n'ai besoin qu'as un instant T de 2 tableau de [50 000 ][8] et de 2 autres de [10 000][8] donc y a t'il une option sous dev c++ ( ou wxdev ) qui me permetrais d'augmenter la taille utiliser ?

    en ce qui concerne les structures files etc... je suis novice donc je sais pas tres bien mais a priori mes 4 tableaux sont necessaire .
    il me semble que si devc++ ou wxdev est bien parametrer on peut creer des tableau de cette taille sans probleme .
    cordialement

  4. #4
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 633
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 633
    Par défaut
    Je ne crois franchement pas que le seul paramétrage de ton EDI (ou de la compilation) puisse te permettre de résoudre tous tes problèmes...

    Bien souvent, la résolution de problèmes passe par le fait de se poser les bonnes questions, et les réponses obtenues ne sont que très rarement de l'ordre du paramétrage du compilateur

    Comme je l'ai indiqué plus haut, je ne crois pas non plus que le tableau soit forcément la meilleure solution, mais il faudrait que tu nous précise déjà:
    • Le type d'éléments que tu veux mettre dans ce que tu appelle pour l'instant tes "tableaux"
    • l'usage que tu veux faire de ces données (principalement faire des ajouts, principalement rechercher des éléments particuliers, les parcourir du début à la fin, avoir des accès "aléatoires" à l'un ou l'autre élément,...)
    • la possibilité d'avoir des doublons, ou non
    • ...

    A partir de là, tu pourras sans doute te baser sur l'image qui apparait dans l'entrée de la FAQ qui concerne le choix du conteneur en vue de déterminer lequel est celui qui te sera le plus utile, en sachant que seul le std::vector a pour effet d'avoir de manière systématique les éléments contigus en mémoire.

    Enfin, si tu pouvais nous expliquer précisément ce que tu cherche à faire, le but de l'application que tu essaye de créer, je t'assure que tu aurais des chances bien plus importantes d'obtenir une aide efficace...
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 98
    Par défaut
    merci de ta reponse .

    mes tableaux sont pour des comparaisons , du debut a la fin , pas de doublons , ce sont des entiers ( combinaisons ) c'est pour de l'analyse combinatoire ,par exemple je genere toutes les combinaisons de 10 chiffres parmi 70 dans 2 tableaux et je compare ses 2 tableaux suivant des criteres X ou Y donc au debut j'ai 2 tableaux identique avec les memes combinaisons que je doit comparer deja tu vois que rien que ses 2 tableaux sont enorme donc pas question de generer des fichiers ce qui reglerais mon probleme de memoire mais engendrerais un temps de calcul enorme .
    cordialement

  6. #6
    Membre éclairé Avatar de vdumont
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 510
    Par défaut
    Je suis pas certain de comprendre pourquoi il te faut des tableaux à 2 dimensions ?

  7. #7
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 98
    Par défaut
    parce que c'est des combinaisons :-)

    exemple
    premier tableau

    1 2 3 4 5 6 7 8 9 10
    1 2 3 4 5 6 7 8 9 11
    1 2 3 4 5 6 7 8 9 12
    etc...

    2 ieme tableau
    1 2 3 4 5 6 7 8 9 10
    1 2 3 4 5 6 7 8 9 11
    1 2 3 4 5 6 7 8 9 12

    chaque combinaisons du premier tableau est comparer avec l'ensemble des combinaisons du deuxieme tableau suivant certains critere et ceci jusqu'as la fin du tableau 1 donc a part des tableaux je vois pas tres bien comment faire ( dans un temps raisonable ) car bien sur je pourrais generer 2 fichiers mais bonjour le temps de traitement :-)
    et comme ce sont des comparaisons de combinaisons la aussi je vois pas tres bien a part des tableaux a 2 dimensions comment faire ( toujours pareil dans un temps de traitement raisonable )
    cordialement

  8. #8
    Membre éclairé Avatar de vdumont
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 510
    Par défaut
    Hum, il est certain que faire cela dans un temps raisonnable est corcé, pas par l'algorithme mais par le type de problème en tant que tel, il y a n! combinaisons possible dans le pire cas et donc ce sera de l'ordre de O(n!), donc le temps d'exécution croit exponentiellement par rapport a la taille.

  9. #9
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Je serais curieux de remonter encore un niveau d'abstraction pour savoir pourquoi tu veux effectuer ces comparaisons de combinaisons...

    Autrement, quelques pistes par rapport à ce que tu as indiqué :
    - Le premier tableau n'a a priori pas besoin d'être en mémoire, lui, car tu le traite ligne à ligne.
    - Si le problème est d'utiliser de la mémoire discontinue, un std::deque devrait être une structure bien adaptée (pas besoin de continuïté, et bien moins de place mémoire perdue qu'une liste ou un set)
    - Il existe un liob (pas encore testée) nommé STXXL destinée à utiliser efficacement le disque pour gérer des données ne tenant pas en mémoire.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  10. #10
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 98
    Par défaut
    Bonjour ,

    ses comparaisons sont pour verifier certaine occurences .

    pourriez vous m'expliquer ce que vous voulez dire par LIOB nommé STXXL cela se traduit comment dans wdev c++ ( ou wxdev ) ?
    je declare quoi exactement dans mon programme pour avoir accés a ce que vous dites ,pouuriez vous me donner un exemple de declaration de tableau a 2 dimension en utilisant vos sugjestions ?

    ps) pardon pour mon français :-)
    cordialmeent

  11. #11
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    C'est une bibliothèque externe.
    http://stxxl.sourceforge.net/
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  12. #12
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 98
    Par défaut
    j'ai telechargé mais je crois que cela ne fonctionne qu'avec visual c++ et non wxdev c++ et a priori ( je lit la notice) c'est un peut trop complexe pour moi ne pas oublier que je suis un debutant en C .
    mais bon c'est pas grave je vais trouver une autre solution sinon tant pis j'utiliserais des fichiers ;-)
    merci a tous pour votre aide :-)
    cordialement

  13. #13
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    Le C c'est le forum d'à côté.

    STXXL fonctionne comme la STL, qui est un truc de base en C++.

Discussions similaires

  1. Tableau trop grand : quelles alternatives?
    Par timbrochier dans le forum Collection et Stream
    Réponses: 14
    Dernier message: 14/08/2009, 14h46
  2. Tableau trop grand
    Par dannhil dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 14
    Dernier message: 20/10/2008, 02h36
  3. Tableau trop grand sur FF
    Par kevinf dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 28/06/2008, 20h16
  4. [VBA-W2007]scinder automatiquement un tableau trop grand
    Par tazamorte dans le forum VBA Word
    Réponses: 3
    Dernier message: 22/06/2007, 17h28
  5. tableau trop grand ?
    Par Praxe dans le forum C++
    Réponses: 17
    Dernier message: 17/03/2005, 14h14

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