C++: pb mémoire avec affectation de vecteur

Bonjour,

J'ai un souci lors de l'éxecution de mon main.
ERREUR: unhandled exception "nomduprojet":0xC00000.. Access violation
J'ai une erreur lors de l'éxecution de la ligne:
theMatrice = simulation_taux(Maturity,FloatingFrequency,NbOfPaths);


où simulation_taux renvoie un vecteur et thematrice est un vecteur aussi

Je croyais que l'on pouvait dire Vecteur1=vecteur2?Non?

Merci d'avance à ceux qui pourront m'aiguiller vers la solution.

Morgan

7 réponses

  1. http://www.cppreference.com/cppvector/all.html

    Cette page devrait t'aguiller.

    A priori il faut faire une assignation avec les iterateur, genre
    TheMAtrice.assign(simulation_taux(Maturity,FloatingFrequency,NbOfPaths).begin(), simulation_taux(Maturity,FloatingFrequency,NbOfPaths).end());
    0
    1. Modérateur
      Si tu testes ce programme tu t'apercevra que tu peux faire vector1=vector2. Ton problème doit venir d'ailleurs (objet de référence détruit avant la copie ?)

      #include <vector>
      #include <iostream>
      using namespace std;
      
      int main(){
          vector<int> v;
          v.push_back(2);
          v.push_back(3);
          for(unsigned int i=0;i<v.size();i++) cout<<v[i]<<" ";
          cout<<endl;
          vector<int> w;
          w=v;
          for(unsigned int i=0;i<v.size();i++) cout<<w[i]<<" ";
          cout<<endl;
          return 0;
      }


      Por voir exactement où ça plante, si tu es sous linux, compile ton programme avec l'option -g et lance le debugger:
      $ g++ -W -Wall -g plop.cpp -o plop.exe
      $ gdb plop.exe
      gdb> r
      segfault
      gdb> bt


      Comme ça tu sauras exactement à quel endroit ça plante.
      Une solution pourrait être de passer par des pointeurs dans ton cas.

      Bonne chance ;o)
      0
      1. Bon j'ai essayé l'histoire des assign et cela ne marche pas
        toujours la meme erreur!!
        mais je persévère
        et je n'ai pas linux
        0
        1. Bon j'ai essayé l'histoire des assign et cela ne marche pas
          toujours la meme erreur!!
          mais je persévère
          et je n'ai pas linux
          0
          1. Modérateur
            Juste par curiosité essaie le constructeur par copie
            vector<...> theMatrice = vector<...>(simulation_taux(Maturity,FloatingFrequency,NbOfPaths));
            0
            1. Ca y est !
              C'était juste une histoire d'indices

              Merci encore
              0
              1. Modérateur
                Alors clos le sujet :)
                0