2015-11-13 3 views
-3

Я пытаюсь вычислить полный массив в C++. Например, я хочу, чтобы выход был равен x = [1,2,3,4,5 .... n] Как мне это сделать? Я уже знаю, как печатать каждый элемент массива, используя простой цикл. Например, в 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; 

В данном случае это, очевидно, выплевывает х [10]. Где, как я хочу x = [1 ... n] и т. Д. Каков самый простой способ достижения этого?

Я использую Eclipse на OSX. Я использую компилятор G ++, что инструменты разработчика Xcode имеет для командной строки

+0

'станд :: соиЬ << х [п] << станд :: епсИ;' обращается к массив вне пределов, вы поняли это? –

+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

Есть ли модуль, который мне нужно импортировать для диапазона, основанного на цикле? Я получаю сообщение об ошибке »предупреждение: спецификатор типа« auto »- это расширение C++ 11» (я довольно новичок в C++, поэтому я никогда не слышал о диапазонах, основанных на циклах) – Collaptic

+0

Возможно, у вас нет C + +11, или вы можете компилировать без расширений C++ 11. Какую IDE вы используете? – Tas

+0

Я использую Eclipse на OSX. Я использую компилятор g ++, который имеет инструменты разработчика 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; 
} 
Смежные вопросы