Bonjour à tous ,
j'espère que vous allez m'aider .
en fait,je trouve un résultat bizarre : taille du vecteur négative
!!
mon code est trop long donc j'essaierai de citer l'essentiel .
j'ai une structure , dans laquelle je définit un vecteur
1 2 3 4 5 6 7 8
| struct mon_pkt {
...
std::vector<nsaddr_t> ma_list_;
...
inline int taile() {
return ma_list_.size() ;
}
}; |
ensuite, j'utilise cette structure , je crée une variable ph de type mon_pkt
aprés je stocke les tailles des vecteurs dans une file appelée window
window.Enfiler(ph->taille());
puis, j'utilise les valeurs stockées dans la file :
1 2 3 4 5
| for(int i=0;i<y;i++) //y nombre d'éléments dans la file window
{
r = window.get_element(i);
printf( " size = %d \n ", r );
} |
voici ce que j'obtient :
1 2 3 4
| size = -1219271720
size = 16
size = 41
size = 58 |
le premier vecteur de taille -1219271720
!!!!!!!
je sais pas d'ou vient cette valeur 
A propos la classe File , voici le code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
| // Fichier File.cpp
// Définitions des fonctions membres de la classe File
#include <cassert>
#include <iostream>
#include <stdio.h>
#include "File.h"
File::File ( int taille )
// Constructeur
{
window = new int [taille];
}
//File::~File ()
// {
// delete[] window;
// }
// destructeur
void File::ViderFile ()
{
for(int i=0;i<taille;i++)
{
window[i]=0;
}
}
void File::Enfiler ( const int & element )
{
if ( FilePleine())
int x = Defiler();
int indice = dernier_indice();
window[indice] = element;
}
int File::Defiler ()
{
//if ( FileVide() )
//printf("erreur la file vide");
int x = window[0];
Decaler_tableau();
return x ;
}
int File::PremierElement () const
{
if ( FileVide() )
printf("erreur la file vide");
return window[0];
}
bool File::FileVide () const
{
int nbre_element = 0 ;
for (int i=0;i<taille;i++)
if (window[i]==0)
{
nbre_element ++;
}
if (nbre_element == taille )
return 1;
else
return 0;
}
bool File::FilePleine () const
{
int nbre_element = 0 ;
for (int i=0;i<taille;i++)
if (window[i]!=0)
{
nbre_element ++;
}
if (nbre_element == taille )
return 1;
else
return 0;
}
int File::get_element(int position)
{
return window[position];
}
int File::dernier_indice()
{
for (int i=0;i<taille;i++)
if (window[i]==0)
{
return i;
break;
}
}
void File::Decaler_tableau()
{
for (int i=1;i<taille;i++)
window[i-1]=window[i];
}
File File::copie_file()
{
File copie = File(taille);
int i=0 ;
for (int i=0;i<taille;i++)
{
copie.Enfiler(window[i]);
}
return copie;
} |
merci d'avance pour l'aide
Partager