STL standard template library
Standard Template Library, STL, är en del av
standarden för C++. Som namnet säger är det ett bibliotek med standardiserade template-klasser.
Tanken med STL är att om det finns
ett standardiserat bibliotek så behöver man inte uppfinna hjulet varje gång, man
kan istället koncentrera sig på att programmera själva logiken i ett program. STL har även fått en chans att ordentligt stabiliseras och
bli både buggfritt och väl optimerat. Man har velat
göra klasserna i STL snabba och minnessnåla så att
program inte "bestraffas" för att de använder sig av klasser ur STL.
STL är ett stort bibliotek men
många klasser och ännu flera användningsområden. De klasser som finns i STL kan grovt indelas i några stora huvudgrupper:
container-klasser som används för att hålla ordning
på objekt. Här finns bl.a. listor, köer stackar och vektorer.
generiska algoritmer som är algoritmer som
opererar på containers. Dessa algoritmer fungerar på samma sätt oberoende av
vilken container de används på. Exempelvis sortering är en generisk algoritm.
iteratorer som används för att iterera igenom de
objekt som finns i en container. Alla containers ha egna iteratorer,
men deras gränssnitt ser lika ut, så användaren kan således enkelt iterera
genom objekten i vilken container som helst.
funktionsobjekt
som fungerar som funktioner som appliceras på en container. Dessa kan utföra
någon viss operation på varje element, t.ex. beräkna ett medeltal eller summor.
Vi ska titta på klasserna vector, queue och stack.
En vector kan betraktas som ett fält (en array) men med ett antal färdiga operatorer och funktioner. En vectors strolek är dynamisk d.v.s den är så stro den behöver vara, växer eller krymper efter behov.
Vi tittar först på funktioner för insättning och hämtning av data.
vector<double> langd;
Skapar en vector av typen double med namnet langd.
För att lägga till data i slutet av en vector
används metoden push.back( )
langd.push.back(3.14);
lägger in parametervärdet 3.14 sist i vectorn langd.
langd.push.back(6.28);
langd.push.back(10);
langd innehåller nu följande värden: | 3,14 | 6,28 | 10,0 |
För att hämta innehåll i vectorn används at-funktionen som du känner igen från klassen string.
cout<< langd.at(0);
Skriver ut värdet som finns lagrat i langds
första position (3,14).