31.12.2014 Views

Paskaitų konspektai - Matematikos ir Informatikos fakultetas ...

Paskaitų konspektai - Matematikos ir Informatikos fakultetas ...

Paskaitų konspektai - Matematikos ir Informatikos fakultetas ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Trumpai apie sud÷tingesnes šablonų savybes<br />

Ankstesnių skyrelių tur÷tų pakakti, kad gal÷tum÷ti naudotis stadartin÷s C++<br />

bibliotekos šablonais. Tuo tarpu šiame skyrelyje trumpai pamin÷sime kiek<br />

subtilesnes šablonų galimybes.<br />

Šablonas gali tur÷ti keleta parametrų:<br />

Be to, parametrais gali būti ne tik tipų vardai, bet <strong>ir</strong> konstantos. Pvz., fiksuoto dydžio<br />

buferis:<br />

template class Buffer {...};<br />

Buffer charBuffer;<br />

Buffer recordBuffer;<br />

Šablono parametrai gali nusakyti algoritmą:<br />

Jie gali nurodyti, kokią operaciją atlikti su argumentais. Pvz., lyginant simbolines<br />

eilutes tenka atsižvelgti į kokrečiai kalbai būdingą abec÷lę: raid÷ "Ą" (A nosin÷) eina<br />

po raid÷s "A" <strong>ir</strong> prieš raidę "B", kas n÷ra tiesa, jei lygintume tik simbolių kodus. Tuo<br />

tikslu galime aps<strong>ir</strong>ašyti palyginimo klasę su dviem statiniais metodais:<br />

class ComparatorLT<br />

{<br />

public:<br />

static bool equal (char a, char b) {...}<br />

static bool less (char a, char b) {...}<br />

};<br />

Kartu aprašyti eilučių palyginimo funkcijos šabloną, kuris ima kaip parametrą<br />

palyginimo klasę. Ši funkcija grąžina reikšmę 0, kai eilut÷s lygios, neigiamą skaičių,<br />

kai p<strong>ir</strong>ma mažesn÷ už antrą, <strong>ir</strong> teigiamą skaičių kai p<strong>ir</strong>ma eilut÷ didesn÷ už antrą:<br />

template<br />

int compare (const string& a, const string& b)<br />

{<br />

for (int i = 0; i

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!