Video: 105 STL Algorithms in Less Than an Hour 2025
Standard C ++-biblioteket indeholder et komplet sæt af matematik, tid, input / output og DOS-operationer for blot at nævne nogle få. Mange af de tidlige programmer, som du lærer som en nybegynder, bruger de såkaldte tegnstrengsfunktioner, der er defineret i de inkluderede filstrenge .
Argumenttyperne for mange af disse funktioner er rettet. For eksempel skal begge argumenter til strcpy (char *, char *) være en pointer til en null-termineret tegnstreng - intet andet giver mening.
Der findes funktioner, der kan anvendes til flere typer. Overvej eksemplet med funktionen lowly maximum (), som returnerer maksimalt to argumenter. Alle følgende variationer giver mening:
int maksimum (int n1, int n2); // returnere max på to heltals usignerede maksimum (usigneret u1, usigneret u2); dobbelt maksimum (dobbelt d1, dobbelt d2); char max (char c1, char c2);
Her vil du gerne gennemføre maksimum () for alle fire tilfælde.
Selvfølgelig kan du overbelaste maksimum () med alle mulige versioner:
dobbelt maksimal (dobbelt d1, dobbelt d2) {retur (d1> d2)? d1: d2;} int maksimum (int n1, int n2) {retur (n1> n2)? n1: n2;} char max (char c1, char c2) {return (c1> c2)? c1: c2;} // … gentag for alle andre numeriske typer …
Denne fremgangsmåde virker. Nu vælger C ++ den bedste match, maksimum (int, int) , for en reference som maksimum (1, 2) . Men at skabe den samme funktion for hver type variabel er et stort spild af tid.
Kildekoden for alle de maksimale (T, T) funktioner følger det samme mønster, hvor T er en af de numeriske typer. Det ville være så praktisk, hvis du kunne skrive funktionen en gang og lade C ++ levere typen T efter behov, når funktionen bruges. Faktisk kan C + + du gøre præcis dette. De kaldes skabelondefinitioner .