2015-11-13 51 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; 
}