2013-09-25 3 views
-4
#include <iostream> 

using namespace std; 

int main() 
{ 
    constexpr size_t b = 10; 
    int arr[b]; 
    for (int i = 0; i<b; i++) 
    { 
     arr[i] = i; 
    } 
    for (int x : b) 
    { 
     cout<<x; 
    } 
} 

Код указан выше. Почему я не могу распечатать содержимое массива, используя диапазон для цикла? Когда я пытаюсь, это приводит к ошибке: Ошибка: нет подходящей функции для вызова «begin (const unsigned int &)» |ошибка: нет соответствующей функции для вызова «begin (const unsigned int &)» |

+0

алгоритм вы ищете, чтобы заменить первый цикл 'станд :: iota'. – chris

ответ

7

Why can't I print the contents of an array using the range for loop?

Вы можете: но диапазон массив arr, а не его размер b:

for (int x : arr) 
      ^^^ 
+0

Спасибо! Понял! В любом случае, почему я не могу напечатать b, используя диапазон для цикла? – Slay

+5

Поскольку 'b' не является массивом или какой-либо формой контейнера, который может служить диапазоном. На ваш взгляд, прочитайте 'for (int x: arr)' as "для всех целых x, которые содержатся в arr". Замените «arr» на «b» в этом предложении, и вы увидите, что это не имеет смысла. – us2012

Смежные вопросы