2010-08-07 6 views
0

Je ne comprends pas pourquoi le vecteur est vide après le remplissage.Remplissage du vecteur std

Le code est:

bool fillArray (vector<int> &array) 
{   
    string temp; 
    getline(cin, temp); 

    if (temp == "-1") 
     return false 
    else 
     return true; 

    int res = atoi(temp.c_str()); 
    array.push_back(res); 
} 

void showArray(const vector<int> array) 
{ 
    for (int i = 0; i < array.size(); i ++) 
     cout << array[i] << " "; 
} 


int main(int argc, char** argv) 
{ 
    vector<int> array; 

    while (fullArray (array)) 
    {} 

    showArray(array); 
    return 0; 
} 

Lorsque je saisis -1 les pauses du cycle, mais la taille du vecteur est 0, pourquoi?

+1

Le paramètre de 'showArray' doit être déclarée comme référence const (au lieu d'une valeur const). – Philipp

Répondre

5

Ces lignes sont votre problème:

if (temp == "-1") 
     return false 
    else 
     return true; 

    int res = atoi(temp.c_str()); 
    array.push_back(res); 

Dans le cas d'une bonne entrée, vous revenez true de votre méthode fillArray avant d'appeler réellement push_back avec la valeur de votre vecteur.

+0

Erreur stupide = \. Je vous remercie. – Ockonal

+0

Est-ce votre vrai code après tout? Le compilateur émet une erreur car le point-virgule après 'return false' est manquant. – Philipp

+0

Je ne comprends pas pourquoi tout le monde semble retaper son code dans SO au lieu de copier-coller. Non seulement le ';' est manquant après 'return false' mais l'appel dans' main() 'est à une fonction appelée' fullArray() 'au lieu de' fillArray() ' – Praetorian

0
int res = atoi(temp.c_str()); 
array.push_back(res); 

est jamais atteint dans votre méthode FillArray, parce que le cas renvoie true ou false

Questions connexes