Templates og STL
Computerspace · FGU · Programmering i C++
🔧 Hvad er templates og STL?
Templates lader dig skrive generisk kode der virker med enhver datatype. STL (Standard Template Library) er C++'s kraftfulde standardbibliotek.
Template-funktioner:
```cpp
// Generisk max-funktion – virker med int, double, string, etc.
template<typename T>
T maksimum(T a, T b) {
return (a > b) ? a : b;
}
int m1 = maksimum(3, 7); // 7
double m2 = maksimum(3.14, 2.72); // 3.14
```
Template-klasser:
```cpp
template<typename T>
class Boks {
private:
T indhold;
public:
Boks(T i) : indhold(i) {}
T hent() { return indhold; }
};
Boks<int> heltalsboks(42);
Boks<std::string> tekstboks("Hej");
```
STL Containers:
```cpp
#include <vector> // Dynamisk array
#include <map> // Nøgle-værdi par (sorteret)
#include <set> // Unikke elementer (sorteret)
#include <queue> // FIFO kø
#include <stack> // LIFO stak
std::map<std::string, int> karakterer;
karakterer["Anna"] = 12;
karakterer["Bo"] = 7;
std::cout << karakterer["Anna"]; // 12
```
STL Algoritmer:
```cpp
#include <algorithm>
std::vector<int> v = {3, 1, 4, 1, 5, 9};
std::sort(v.begin(), v.end()); // Sorter
auto it = std::find(v.begin(), v.end(), 5); // Find element
std::transform(v.begin(), v.end(), v.begin(),
[](int x) { return x * 2; }); // Fordobl alle elementer
```
---
🎓 Læringsmål for Templates og STL
Læringsmål
- Skrive og bruge template-funktioner og template-klasser
- Kende de vigtigste STL-containers: vector, map, set, queue, stack
- Bruge STL-algoritmer: sort, find, transform fra <algorithm>
- Forstå iteratorer som universelt interface til STL-containers
Sådan kan du arbejde med emnet
- Hvad er et template i C++?
- Hvornår bruger man std::map vs std::vector?
- Hvad er std::sort og hvordan bruger man det?
- Hvad er en iterator og hvad bruges den til?
⚠️ Typiske fejl at undgå
- Glemmer typename/class i template – skriv
template<typename T>ikke baretemplate T - Bruger map når unordered_map er hurtigere –
std::unordered_maper O(1) vs. O(log n) - Iterator invalidation – iteratorer kan blive ugyldige efter ændringer i containeren
---
💡 Tips til at komme i gang
- Brug std::map til ordbøger – nøgle-værdi opslag er intuitivt og nyttigt
- Lær sort() grundigt – det bruges overalt og understøtter custom sammenligningsfunktioner
- Eksperimentér med STL – prøv at implementere et telefonbogs-program med map
Øv dette emne med AI — quizzer, forklaringer og feedback tilpasset dit niveau.
Prøv Fagportalen gratis