for (int i=0;i<5;i++)num[i]=i+1;
Загружает переменную num
, например [0] = 1
, [1] = 2
... [4] = 5
for (auto i:num)cout<<num[i]<<" ";
Это действительно происходитчерез значения в num
, а не в индексах, поэтому у вас есть печать num[1]
, num[2]
... num[5]
(кстати, num[5]
- неопределенное поведение)