Video: 105 STL Algorithms in Less Than an Hour 2025
Standard C ++-biblioteket gir et komplett sett med matte, tid, input / output og DOS-operasjoner, for å nevne noen få. Mange av de tidlige programmene du lærer som en nybegynner, bruker de såkalte tegnstrengsfunksjonene som er definert i filstrengene .
Argumenttyper for mange av disse funksjonene er løst. For eksempel må begge argumentene til strcpy (char *, char *) være en peker til en null-avsluttet tegnstreng - ingenting annet gir mening.
Det finnes funksjoner som gjelder for flere typer. Tenk på eksemplet på funksjonen lowly maximum (), som returnerer maksimalt to argumenter. Alle følgende variasjoner er fornuftige:
int maksimal (int n1, int n2); // return max på to heltall usignert maksimum (usignert u1, usignert u2); dobbelt maksimal (dobbelt d1, dobbel d2); karbon maksimal (karbon c1, karbon c2);
Her ønsker du å implementere maksimum () for alle fire tilfellene.
Selvfølgelig kan du overbelaste maksimum () med alle mulige versjoner:
dobbelt maksimal (dobbelt d1, dobbel d2) {retur (d1> d2)? d1: d2;} int maksimal (int n1, int n2) {retur (n1> n2)? n1: n2;} char max (char c1, char c2) {retur (c1> c2)? c1: c2;} // … gjenta for alle andre numeriske typer …
Denne tilnærmingen fungerer. Nå velger C ++ den beste matchen, maksimum (int, int) , for en referanse som maksimum (1, 2) . Men å skape den samme funksjonen for hver type variabel er et brutto tidsspill.
Kildekoden for alle de maksimale funksjonene (T, T) følger det samme mønsteret, hvor T er en av talltypene. Det ville være så praktisk hvis du kunne skrive funksjonen en gang og la C ++ levere typen T etter behov når funksjonen brukes. Faktisk kan C + + du gjøre akkurat dette. De kalles maldefinisjoner .
