Paskaitų konspektai - Matematikos ir Informatikos fakultetas ...
Paskaitų konspektai - Matematikos ir Informatikos fakultetas ...
Paskaitų konspektai - Matematikos ir Informatikos fakultetas ...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Konteineriai <strong>ir</strong> iteratoriai<br />
Programose retai pavyksta aps<strong>ir</strong>iboti pavienių objektų naudojimu. Dažnai tenka<br />
d<strong>ir</strong>bti su objektų masyvais <strong>ir</strong> sąrašais. Standartin÷ C++ biblioteka pateikia ištisą<br />
rinkinį dinamiškai augančių konteinerių bei algoritmų darbui su jais. Mes<br />
pasinaudosime trimis iš jų: vektoriumi (masyvu, vector), sąrašu (list) <strong>ir</strong> asociatyviu<br />
masyvu (map). Konteineriuose saugosime tuos pačius programos food2 objektus<br />
Food:<br />
// food3.cpp<br />
...<br />
#include <br />
#include <br />
#include <br />
...<br />
int main ()<br />
{<br />
vector foodVector;<br />
list foodList;<br />
for (;;)<br />
{<br />
string name;<br />
double price;<br />
cout > name;<br />
if (name == "q") break;<br />
cout . Ši konstrukcija, vadinama šablonais (template), detaliau bus aptarta<br />
daug v÷liau.<br />
Kaip matome, abiejų tipų konteineriai prigrūdami duomenimis metodo push_back()<br />
pagalba. Vektorius yra labai panašus į paprastą C kalbos masyvą. Jo elementus<br />
galime indeksuoti. Vektorių papildymas elementais n÷ra greitas veiksmas, nes<br />
kuomet elementų kiekis (size) v<strong>ir</strong>šija vektoriaus vidinio buferio talpą (capacity),<br />
tenka išsk<strong>ir</strong>ti naują buferį <strong>ir</strong> į jį perkopijuoti visus elementus bei ištrinant senąjį<br />
buferį. Tuo tarpu sąrašai auga greitai, bet jų elementus galime perb÷gti tik iš eil÷s.<br />
27