Video: C++ STL ( Standard Template Library ) - Part - 1 : Introduction to STL 2024
De standaard C ++ -bibliotheek biedt een complete set van wiskunde, tijd, invoer / uitvoer en DOS-bewerkingen, om er maar een paar te noemen. Veel van de vroege programma's die u als beginner leert, gebruiken de zogenaamde tekenreeksfuncties die zijn gedefinieerd in de bestandsstrings .
De argumenttypen voor veel van deze functies zijn vastgesteld. Beide argumenten voor strcpy (char *, char *) moeten bijvoorbeeld een verwijzing zijn naar een tekenreeks met nulterminatie - niets is logischer.
Er zijn functies die van toepassing zijn op meerdere typen. Beschouw het voorbeeld van de lowly maximum () functie, die het maximum van twee argumenten retourneert. Alle volgende variaties zijn logisch:
int maximum (int n1, int n2); / / return max van twee gehele getallen unsigned maximum (unsigned u1, unsigned u2); dubbel maximum (dubbele d1, dubbele d2); charmaximum (char c1, char c2);
Hier zou u maximum () willen implementeren voor alle vier de gevallen.
Natuurlijk kunt u maximaal () overbelasten met alle mogelijke versies:
dubbel maximum (dubbele d1, dubbele d2) {return (d1> d2)? d1: d2;} int maximum (int n1, int n2) {return (n1> n2)? n1: n2;} char maximum (char c1, char c2) {return (c1> c2)? c1: c2;} // … herhalen voor alle andere numerieke typen …
Deze aanpak werkt. Nu selecteert C ++ de beste overeenkomst, maximum (int, int) , voor een referentie zoals maximum (1, 2) . Het maken van dezelfde functie voor elk type variabele is echter een grove verspilling van tijd.
De broncode voor alle maximale (T, T) functies volgt hetzelfde patroon, waarbij T een van de numerieke typen is. Het zou zo handig zijn als u de functie één keer zou kunnen schrijven en C ++ het type T zou kunnen leveren als dat nodig is wanneer de functie wordt gebruikt. In feite kunt u met C ++ precies dit doen. Ze worden sjabloondefinities genoemd.