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

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

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

Saved successfully!

Ooh no, something went wrong!