2015-11-13 52 views
-3

我試圖弄清楚在C++中打印完整的數組。 例如,我想要輸出爲x = [1,2,3,4,5 .... n] 我該如何去做這件事?我已經知道如何使用簡單的for循環打印數組的每個元素。例如,在python中,你可以簡單地說x = [],做一個for循環來將元素附加到數組,然後打印x。如何在C++中打印完整的值數組

讓我們說我有這個代碼。

int n = 10; 
int m = 10; 
double x[n]; 

// Generate vector of random values for x 
for (int i = 0; i<n; ++i) 
{ 
    x[i] = (double)rand()/(double)RAND_MAX; 
    // Print each array element 
    // std::cout << x[i] << std::endl; 

} 

std::cout << x[n-1] << std::endl; 

在這種情況下,這顯然只是吐出x [10]。如果我想要x = [1 ... n]等。 實現此目的的最簡單方法是什麼?

我在OSX上使用Eclipse。我用的是G ++編譯器的Xcode開發工具具有命令行

+0

'的std ::法院<< X [N] <<的std :: ENDL;'訪問數組越界,你知道嗎? –

+0

是的,我做了,對此感到抱歉。我的意思是x [n-1] – Collaptic

+2

你註釋過的線路有什麼問題?它不正是你所要求的嗎? – interjay

回答

3

你正在尋找一個range based for loop

double x[] = { .0, .1, .2, .3, .4 }; 
// Iterate through all elements 
for (auto d : x) 
{ 
    std::cout << d << std::endl; 
} 

注意上面花費的每個元素的副本,因此,如果您想要修改您需要使用的元素

for (auto& d : x) 

改爲。

或者你可以只使用一個正常for圈像你這樣原本:

for (int i = 0; i<n; ++i) 
{ 
    std::cout << x[i] << std::endl; 
} 

範圍基於for循環是最容易雖然

+0

是否有我需要爲基於循環的範圍導入的模塊?我得到了錯誤「警告:'自動'類型說明符是一個C++ 11擴展名」(我對C++很新,所以我從來沒有聽說過基於範圍的循環) – Collaptic

+0

您可能沒有C + +11,或者您可能正在編譯沒有C++ 11擴展。你在用什麼IDE? – Tas

+0

我在OSX上使用Eclipse。我使用Xcode開發人員工具對命令行 – Collaptic

2

,如果你知道一些關於STL,您可以嘗試使用迭代器

代碼:

#include <iostream> 
#include <iterator> 
using namespace std; 

int main() 
{ 
    int arr[5] = {1,2,3,4,5}; 
    copy(arr, arr + sizeof(arr)/sizeof(int),ostream_iterator<int>(cout, " ")); 
    cout << endl; 
    return 0; 
}