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 :

Augmenter le nombre d'éléments dans un vecteur


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Inscrit en
    Novembre 2006
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 073
    Par défaut Augmenter le nombre d'éléments dans un vecteur
    Bonjour
    je voudrais créer un mouvement brownien, qui possède un grand nombre de points, supérieur à 10^7.
    J'ai fait le code suivant:



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    vector<double> brownien; 
    for(long i=1;i<pow(10,7.0);i++){
    	a=brownien[i-1]+pow((double)i/res,0.5)*norm_dist.operator()<boost::lagged_fibonacci19937>(engine);
        brownien.push_back(a);
    	}

    mais dès qu'on passe à 10^8, le programme sature.

    Ensuite, je me suis dit qu'on va créer un autre vecteur, à la suite du premier, comme ceci:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    vector<double> brownien2;
    brownien2.push_back(brownien[pow(10,7.0)-1]+pow((double)(pow(10,7.0))/res,0.5)*norm_dist.operator()<boost::lagged_fibonacci19937>(engine));
     
        for(long i=pow(10,7.0)+1;i<pow(10,8.0);i++){
    	a=norm_dist.operator()<boost::lagged_fibonacci19937>(engine);
        brownien2.push_back(a);
        	}
    mais bien sur cela plante, le nombre maximal de pointeurs à été atteint. Alors je ne vois pas du tout comment résoudre le pb. J'aimerais bien passer à 10^9 points, pour faire des calculs.

    merci

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

    Informations professionnelles :
    Activité : aucun

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

    Si tu travailles en mode 32 bits, c'est malheureusement normal: la limite de mémoire adressable dans ce mode étant de 2GB.

    Si cela t'est possible, essaye de passer en mode 64 bits, mais tu finira malgré tout tôt ou tard par observer un ralentissement du fait de la monopolisation de la mémoire disponible.

    Une solution que l'on pourrait envisager, en partant du principe que tu ne dois jamais disposer, à un moment T, de 10^9 éléments dans ton tableau, serait de sauvegarder dans un fichier les éléments calculés "inutiles" au calcul de manière à ne garder qu'un nombre finalement très restreint de résultat.

    Une fois que tu a atteint le nombre d'éléments que tu voulais calculer, tu utiliserais le fichier pour les récupérer et pouvoir les manipuler "plus en profondeur".
    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

Discussions similaires

  1. Réponses: 3
    Dernier message: 29/09/2007, 14h45
  2. Augmenter le nombre de fenêtres dans tous les programmes xp
    Par pierrot67 dans le forum Windows XP
    Réponses: 2
    Dernier message: 17/07/2007, 12h19
  3. Réponses: 3
    Dernier message: 04/10/2005, 15h13
  4. Compter le nombre d'élément dans un tableau
    Par cryptorchild dans le forum Langage
    Réponses: 6
    Dernier message: 08/07/2005, 13h01
  5. Comparaison de base et calculs du nombre d'éléments dans Bas
    Par BXDSPORT dans le forum Bases de données
    Réponses: 3
    Dernier message: 19/07/2004, 08h00

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