Débutant: vector non reconnu

Débutant: vector non reconnu - C++ - Programmation

Marsh Posté le 25-05-2005 à 08:53:48    

Bonjour,
 
Lors de mon debugage dans visual c++, je m'apperçois
que la déclaration:

Code :
  1. matrice_taux[((i-1)*dc)]=r0;


 ne marche pas.
avec matrice_taux:vector<double> matrice_taux(dc*dl);
Ma fenetre watch me siganle :
Error overloaded operator not found
 
Je ne comprends car dans <vector> l'operateur  crochet est bien défini.
Quelqu'un aurait il une idée.
 
Merci d'avance.
 
Morgan

Reply

Marsh Posté le 25-05-2005 à 08:53:48   

Reply

Marsh Posté le 25-05-2005 à 09:47:50    

using std::vector;

Reply

Marsh Posté le 25-05-2005 à 09:53:27    

En fait j'ai inclus déjà mon #include <vector> et mon using namespace std
 

Reply

Marsh Posté le 25-05-2005 à 10:20:19    

Déjà c'est une affectation et non une déclaration.
dc et i sont bien des entiers ?
r0 est bien un double ?

Reply

Marsh Posté le 25-05-2005 à 10:20:55    

montre :
- ton code
- ton message d'erreur :o

Reply

Marsh Posté le 25-05-2005 à 10:31:23    


 
alors code  
 

Code :
  1. for (int i=1;i<dl;i++)
  2. {
  3.  matrice_taux[((i-1)*dc)]=r0;
  4.  //dc nb de périodes
  5.  for (int j=1;j<=dc;j++)
  6.  {
  7.   t_depart=static_cast<double>(j-1)/static_cast<double>(dc);
  8.   t_fin=static_cast<double>(j)/static_cast<double>(dc);
  9.   //term 1
  10.   term1=DerministTerm1(a,t_depart,t_fin);
  11.  //term2
  12.   term2=DerministTerm2(a,b,t_depart,t_fin);
  13.  //variance  
  14.   VV=sqrt(VarianceVasicek(a,vol,t_depart,t_fin));
  15.   indexation_vecteur=((i-1)*dc)+j;
  16.   //simu normale
  17.   thisGaussian=GetOneGaussianByBoxMuller();
  18.   //rt=
  19.   matrice_taux[indexation_vecteur]=matrice_taux[indexation_vecteur-1]*term1+term2+VV*thisGaussian;


 
 
   

Reply

Marsh Posté le 25-05-2005 à 10:42:23    

c'est quoi déjà le smiley pour dire 'j'efface le drapeau' ?

Reply

Marsh Posté le 25-05-2005 à 10:45:21    

et vector<double> matrice_taux(dc*dl);

Reply

Marsh Posté le 25-05-2005 à 11:01:42    

Tu n’as toujours pas dit comment était déclaré r0.

Reply

Marsh Posté le 25-05-2005 à 11:08:43    

r0 est un double

Reply

Marsh Posté le 25-05-2005 à 11:08:43   

Reply

Marsh Posté le 25-05-2005 à 11:11:16    

Et pourquoi tu ne nous mettais pas un code que l'on pourrait compiler pour voir où est l'erreur ?

Reply

Marsh Posté le 25-05-2005 à 11:13:07    

pas d'erreur de compilation mais lors de l'éxécution pas a pas il ne me reconnait pas la surcharge de l'opérateur []
cf plus haut

Reply

Marsh Posté le 25-05-2005 à 11:19:54    

Bon tu n'aimes pas le mot erreur, alors pourquoi tu ne nous mettais pas un code que l'on pourrait compiler pour voir où est le problème ? ;)
 
EDIT : En fait je crois avoir compris, c'est juste un bug du debbuger de visual qui ne retrouve pas la fonction, c'est ça ? (sans doute du au fait que ce soit un template)


Message édité par Tarabiscote le 25-05-2005 à 11:23:57
Reply

Marsh Posté le 25-05-2005 à 11:23:37    

Code :
  1. #include <cmath>
  2. #include <cstdlib>
  3. #include <vector>
  4. //standard librairie
  5. using namespace std;
  6. //*****calibration des parametres******
  7. extern const double a;
  8. extern const double b;
  9. extern const double r0;
  10. extern const double vol;
  11. //*********matrice_taux=matrice ZC******************
  12. vector<double> simulation_taux(const int maturity,const int FloatingFrequency,const long NbOfPaths)
  13. {
  14. //term 1
  15. double term1;
  16. //term2
  17. double term2;
  18. //term variance
  19. double VV;
  20. double t_depart;
  21. double t_fin;
  22.  
  23. double thisGaussian;
  24. long dl=NbOfPaths;
  25. int dc=maturity*FloatingFrequency;
  26. double temp;
  27.  
  28.  
  29. vector<double> matrice_taux(dc*dl);
  30.  
  31. int indexation_vecteur=0;
  32.  
  33. for (int i=1;i<dl;i++)
  34. {
  35.  
  36.  matrice_taux[((i-1)*dc)]=r0;
  37.  
  38.  //dc nb de périodes
  39.  for (int j=1;j<=dc;j++)
  40.  {
  41.   t_depart=static_cast<double>(j-1)/static_cast<double>(dc);
  42.   t_fin=static_cast<double>(j)/static_cast<double>(dc);
  43.   //term 1
  44.   term1=DerministTerm1(a,t_depart,t_fin);
  45.   //term2
  46.   term2=DerministTerm2(a,b,t_depart,t_fin);
  47.   //écarttype  
  48.   VV=sqrt(VarianceVasicek(a,vol,t_depart,t_fin));
  49.   indexation_vecteur=((i-1)*dc)+j;
  50.   //simu normale
  51.   thisGaussian=GetOneGaussianByBoxMuller();
  52.   //rt=
  53.   matrice_taux[indexation_vecteur]=matrice_taux[indexation_vecteur-1]*term1+term2+VV*thisGaussian;
  54.   //B(t,T)=
  55.   matrice_taux[indexation_vecteur]=A(a,b,vol,t_fin,maturity)*exp(-matrice_taux[indexation_vecteur]*G(a,vol,t_fin,maturity));
  56.    
  57.  };
  58.  
  59. };
  60. return matrice_taux;
  61. };

Reply

Marsh Posté le 25-05-2005 à 11:28:00    

CF : EDIT au dessus.
 
Si c'est bien ça, c'est vraiment gênant ?

Reply

Marsh Posté le 25-05-2005 à 11:28:49    

je crois que tu as raison  
car en fait j'ai un résultat à la fin mais au cours de l'éxécution il ne reconnait pas

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed