Indeksy tablicy

0

Witam.. Jak działają indeksy tablicy? tzn. odwołanie w stylu tablica[Index]
Jak wygląda ich szybkość względem wskaźnika/referencji?

0
class MyArray
{
private:

	int *array = new int[100];
	
public:
	
	int operator[] (int index)
	{
		return *(array + index);
	}
}; 
 
int main()
{
	MyArray a;
	cout << a[5] << endl;
}	
0

tb[i] jest tym samym co *(tb+i) jest tym samym co *(i+tb) jest tym samym co i[tb]
ten ostatni zapis jest nieco dziwaczny więc rzadko używany.
Generalnie chodzi o to że przed wyłuskaniem *(...) jest operacja dodawania tb+i z tego względu, teoretycznie:
for(int i=0;i<N;++i) tb[i]=0; jest wolniejsze od:
for(int *end=tb+N,*p=tb;p<end;*(p++)=0) {} ponieważ ma jedno dodawanie mniej.
Jednak w rzeczywistości jest na odwrót, ponieważ w pierwszym przypadku zadziała casheowanie procesora zaś w drugim nie.

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