2016-06-04 1 views
-3

J'ai travaillé sur un moyen d'entrer des nombres dans un vecteur, puis de le sortir, mais il dit toujours que le vecteur est hors de portée et affiche une erreur extrêmement étrange. Il n'y a pas des erreurs de compilation, mais lorsque le programme arrive à la partie du code où je voulais imprimer le vecteur, il fait cette erreur:Comment imprimer un vecteur?

Error image

Pouvez-vous pas utiliser une déclaration à cout imprimer des vecteurs?

// Program to ask the user for numbers, and when they are done entering numbers, enter DONE. When DONE, print the vector 

#include <iostream> 
#include <algorithm> 
#include <vector> 
#define DONE 20 
using namespace std; 

void l_userinput() 
{ 
    int u_Answer; 
    int vector_Size(0); 
    int start_Size(0); 
    vector<int> v_Name(start_Size); 
    //intialize variables and the initial size of vector 
    cout << "Please enter numbers and when you are done, type in DONE" << endl; 
    while (!start_Size) 
    { 
     cin >> u_Answer; 
     vector_Size++; 
     if (u_Answer == 20) 
      break; 
     //Loop until you type in DONE 
    } 

    for (int i = 0; i < vector_Size; i++) 
    { 
     cout << v_Name[i]; 
     //point of error, Vector out of range? 
     if (i >= vector_Size) 
     { 
      break; 
     } 
    } 
} 

int main() 
{ 
    l_userinput(); 
    return 0; 
} 
+0

* Les questions qui demandent l'aide au débogage («pourquoi ce code ne fonctionne-t-il pas?») Doivent inclure le comportement souhaité, un problème ou une erreur spécifique et le code le plus court nécessaire pour reproduire dans la question elle-même. * S'il vous plaît ne postez pas de captures d'écran des messages d'erreur. Incluez le texte de l'erreur dans la question. – BSMP

Répondre

0

Vous avez plusieurs problèmes avec votre code. D'abord, vous utilisez une variable supplémentaire pour conserver la taille du vecteur. Ce n'est pas nécessaire - le vecteur a la fonction de membre size() pour cela. Deuxièmement, vous ne remplissez pas votre vecteur, mais vous continuez à incrémenter votre compteur. Vous essayez donc d'accéder à des éléments qui ne sont pas dans le vecteur.

Troisièmement, votre #define de DONE n'a rien à voir avec l'utilisateur qui tape le mot DONE. Pour terminer la boucle, l'utilisateur devra entrer 20.

1

Vous n'êtes pas ajouter u_Answer-v_Name, donc quand vous essayez d'imprimer le contenu sur le vecteur est vide. Essayer d'accéder à un élément d'un vecteur vide entraîne un comportement indéterminé.