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).