2016-11-29 3 views
0

Ich habe gerade mit C++ begonnen und lerne über Vektoren. einen Loop-Werte in die Vektortabelle hinzuzufügen, und dann versucht, es zu drucken unter Verwendung von:Drucken von Vektoren - Leere Ausgabe

std::copy(multi_array.begin(), multi_array.end(), std::ostream_iterator<char>(std::cout, " ")); 

aber das druckt eine leere Zeichenfolge auf dem Fenster-Konsole.

hier ist der Code:

vector<int> multi_array; 
    for(int v=0;v <= 3; v++){ 
    multi_array.push_back(v); 
    } 
    std::copy(multi_array.begin(), multi_array.end(), std::ostream_iterator<char>(std::cout, " ")); 

Antwort

2

Sie benötigen

std::ostream_iterator<int>(std::cout, " ") 
         ^^^ 

int s zu schreiben. Das erste Template-Argument muss der Typ sein, der gedruckt werden soll.

Um zukünftige Probleme zu vermeiden, gehen Sie wie folgt vor: the docs.

2

Statt mit

std::ostream_iterator<char>(std::cout, " ")) 

Versuch zu verwenden:

std::ostream_iterator<int>(std::cout, " ")) 

Sie sollten übergeben Sie die Art von Vektor Vorlage zu verwenden. Funktioniert es :) ?

2

Ihre Eingaben in Vektor werden in Zeichen umgewandelt und die Zeichen 0, 1, 2, 3 können nicht gedruckt werden, deshalb erhalten Sie eine leere Ausgabe.

Sie müssen druckbare Zeichen eingeben, um die tatsächliche Ausgabe zu sehen.

for (char v = 'a'; i <= 'z'; ++v) { 
    mutli_array.push_back(v); 
} 

Oder benötigen Sie einen gültigen Typ Druck angeben:

std::ostream_iterator<int>(std::cout, " "); 
2

Sie in einige C++ Tutorials oder ein Udemy Kurs in es aussehen könnte. Ein einfacher Weg, als drucken die Kopierfunktion verwendet, ist dies:

vector<int> multi_array; 
for(int v=0;v <= 3; v++){ 
    multi_array.push_back(v); 
    cout << multi_array.back() << " "; 
} 

cout << endl; 

Vergessen Sie nicht Iostream

2

Sie #include müssen den richtigen Datentyp im ostream_iterator defintion haben:

std::copy(multi_array.begin(), multi_array.end(), ostream_iterator<int>(std::cout, " "));