Mallar (templates) – STL-biblioteket
Mål
Efter Steg 4 kommer du ha inblick i hur funktions- och klassmallar kan användas, för att dra nytta av det stora STL-biblioteket (Standard Template Library) som följer med alla utvecklingsverktyg för C++. Du har även fått kunskap om hur containerobjekt underlättar en generell användning av STL:s containerklasser. Djupare förståelse för denna funktionalitet får du genom att göra en egen praktisk “container”-tillämpning. En orientering kring lagring, sökning och sortering av data med hjälp av STL:s generiska funktioner har visat tillämpningsområden som stöds av biblioteket, och i detta har också ingått en presentation av bibliotekets iteratorer.
Innehåll
Lektions-materialet i detta sista kurssteg ägnas åt hur C++ kan hjälpa oss att generalisera beteenden, genom att “kapsla in” dem, till stöd för underhåll och återanvändning av programvara. Inkapsling är ett viktigt OO-koncept, som döljer ett objekts faktiska implementation, så att hårda kodmässiga kopplingar mellan klasser undviks. Vi fortsätter med att undersöka hur funktions- och klassmallar hjälper oss hantera våra objekt generellt i ett omslutande “containerobjekt” och bli oberoende av hur denna container är implementerad. Vi tittar sedan närmare på några av STL:s containerklasser och visar hur de samverkar med de generiska algoritmer (funktionsmallar anpassade för containerklasserna) och funktionsobjekt som också ryms i STL.
Avslutningsvis analyserar vi funktionalitet för att söka, lagra och hämta poster i en container, genom några programexempel med vector och map. Sist men inte minst studeras iteratorns roll, samt vilka krav som ställs på STL-bibliotekets iteratorsorter i olika sammanhang.
Teorin finns i kursbokens kapitel 16 (Templates) och kap. 21 (Introducing the Standard Template Library).
Moment och begrepp:
- Inneslutning – objekt som klassmedlemmar
- Container-objekt
- Funktions- och klassmallar
- Jämförelse mellan några container-klasser
- Några exempel med vector och map
- Så använder vi generiska funktioner
- Generellt och specifikt för iteratorer
- Att använda funktionsobjekt