Standard CPP 11 wprowadza coś takiego jak pętla zakresowa. Pętla ta zachowuje się jak znana z innych języków pętla foreach.
Ten sam kod można by było zapisać też tak:
#include <iostream>
using namespace std;
int main()
{
const int n=4,m=2;
int a[n][m]=
{
{ 1, 2 },
{ 3, 4 },
{ 5, 6 },
{ 7, 8 }
};
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
cout<<a[i][j]<<" ";
}
cout<<"\n";
}
return 0;
}
Polecam poczytać:
https://devcode.pl/cpp11-zakresowa-petla-for/
Jeśli chodzi o słowo kluczowe auto, jest to słowo dzięki temu nie musimy określać typu zmiennej. Od razu pragnę wyjaśnić że auto to nie jakiś uniwersalny typ. Podczas kompilacji kompilator wykryje co jaki typ powinien być zamiast słowa auto i go tam wstawi. Błędem jest tworzenie zmiennych tak:
auto k;
Ponieważ kompilator nie wie jaki typ nadać zmiennej k.
Poprawne jest:
auto k=5;
Tutaj kompilator z kontekstu jest w stanie wywnioskować że chodzi nam o typ int.