2016-06-04 73 views
-3

Ich habe an einer Möglichkeit gearbeitet, Zahlen in einen Vektor einzugeben und dann auszugeben, aber es sagt immer, dass der Vektor außerhalb des Bereichs ist und einen extrem seltsamen Fehler auftaucht. Es gibt keine Fehler kompilieren, aber wenn das Programm auf den Teil des Codes bekommt, wo ich bestimmt den Vektor zu drucken, hat es diesen Fehler:Wie man einen Vektor ausdruckt?

Error image

Können Sie nicht eine cout Anweisung verwenden, um Vektoren ausdrucken?

// 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

* Fragen, die Debugging-Hilfe suchen ("Warum funktioniert dieser Code nicht?") Müssen das gewünschte Verhalten, ein bestimmtes Problem oder einen Fehler und den zur Reproduktion erforderlichen kürzesten Code enthalten es in der Frage selbst. * Bitte keine Screenshots von Fehlermeldungen. Fügen Sie den Text des Fehlers in die Frage ein. – BSMP

Antwort

0

Sie haben mehrere Probleme mit Ihrem Code. Zuerst verwenden Sie eine zusätzliche Variable, um die Vektorgröße beizubehalten. Dies ist nicht erforderlich - Vektor hat size() Mitgliedsfunktion dafür.

Zweitens bevölkern Sie Ihren Vektor überhaupt nicht, stattdessen erhöhen Sie einfach Ihren Zähler - und Sie versuchen auf Elemente zuzugreifen, die nicht im Vektor sind.

Drittens hat Ihr #define von DONE nichts mit dem Benutzer zu tun, der Wort DONE eintippt. Um die Schleife zu beenden, muss der Benutzer 20 eingeben.

1

Du fügst nicht u_Answer-v_Name, so dass, wenn Sie versuchen, den Inhalt auszudrucken der Vektor leer. Der Versuch, auf ein beliebiges Element eines leeren Vektors zuzugreifen, führt zu einem nicht definierten Verhalten.