Chyba nie rozumiem zakresowego "for"

0
	int tablica[16] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};

	for (auto x : tablica) cout << tablica[x] << " ";
	cout << endl; 
	for (int i = 1; i < 16; i++) tablica[i - 1] = tablica[i];

	for (int i = 0; i < 16; i++) cout << tablica[i] << " "; //pierwszy sposób
	cout << endl;
	for (auto x : tablica) cout << tablica[x] << " ";  //drugi sposób

Dlaczego wyniki wyświetlone pierwszym sposobem różnią się od drugiego?

2

Odnośnie drugiej pętli: x nie jest wtedy indeksem, ale konkretnym elementem tablicy, czyli nie robisz tablica[x], tylko x

0

Rozumiem, dziękuję.

1
didzni napisał(a):

Dlaczego wyniki wyświetlone pierwszym sposobem różnią się od drugiego?

W tym konkretnym przypadku wyniki powinny być identyczne, bo x = tablica[x].
Ale ogółem range-for jest właśnie po to, żeby w pętli operować już na konkretnej wartości i nie dotykać indeksów.

A ogółem do tablic polecam std::array. Wygodniejsze w użyciu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1