2016-11-29 35 views
0

我剛開始用C++和IM學習載體。做一個循環值添加到載體表,然後嘗試用它打印出來:印刷載體 - 空輸出

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

而是打印在控制檯窗口中一個空字符串。

下面的代碼:

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, " ")); 

回答

2

你需要

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

int秒。第一模板參數必須是要打印的類型。

,以免後患像這樣的檢查the docs

2

而不是使用

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

嘗試使用:

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

你應該傳遞給模板矢量的類型。它工作:)?

2

你在向量整數越來越鑄造於字符,字符和0,1,2,3是不可打印的,這就是爲什麼你會得到空的輸出。

你需要把打印字符,看到實際的輸出。

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

,或者您需要指定有效的類型打印:

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

你可能會考慮一些C++教程或其中的udemy課程。比使用複製功能,打印更直接的方式是這樣的:

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

cout << endl; 

不要忘了#包括的iostream

2

你需要有正確的數據類型在ostream_iterator確定指標:

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