Kiedyś, dawno temu, miałem okazję prowadzić w ramach koła naukowego wprowadzenie do C++ STL. Materiały szczególnie przydadzą się maturzystom wybierającym C++, studentom rozpoczynającym pracę z C++ oraz osobom, które wolą C.
Część pierwsza: http://secred.pl/2012/06/16/stl-materialy-z-prezentacji/
Część druga: http://secred.pl/2012/06/16/stl-podejscie-drugie-materialy-z-prezentacji/
piątek, 7 lutego 2014
wtorek, 4 lutego 2014
C/C++: Operator nawiasu kwadratowego
Niech:
wtedy można zrobić tak:
ale ale ...... można też tak:
Dziwne?
W zasadzie tak wyszło przez przypadek. Gdy powstawał C (a może nawet B), operator nawiasu kwadratowego był lukrem składniowym. Nim wprowadzono go do języka n-ty element tablicy tab otrzymywano w taki sposób:
Później wprowadzono operator[], który wewnątrz robi dokładnie to samo, co kod powyżej. Ponieważ relacja jest przemienna, bo *(tab+n) <=> *(n+tab), to możliwe jest zamiana indeksu i tablicy.
Lubię ten język : )
int tab[] = { 1, 2, 3, 4, 5 }; const int n = 2;
wtedy można zrobić tak:
int wynik = tab[n];
ale ale ...... można też tak:
int wynik = n[tab];
Dziwne?
W zasadzie tak wyszło przez przypadek. Gdy powstawał C (a może nawet B), operator nawiasu kwadratowego był lukrem składniowym. Nim wprowadzono go do języka n-ty element tablicy tab otrzymywano w taki sposób:
T operator[]( loperand, roperand ) { return *(loperand+roperand); }(co całkiem nieźle tłumaczy czemu tablice numerujemy od zera)
Później wprowadzono operator[], który wewnątrz robi dokładnie to samo, co kod powyżej. Ponieważ relacja jest przemienna, bo *(tab+n) <=> *(n+tab), to możliwe jest zamiana indeksu i tablicy.
Lubię ten język : )
Subskrybuj:
Posty (Atom)