Considera che ci sono degli algoritmi e delle strutture di dati il cui funzionamento è indipendente dal tipo di dati utilizzato: ad esempio un algoritmo di ordinamento è sempre lo stesso per qualunque tipo di dato, si tratta sempre di confronti e di scambi, come pure una lista concatenata; i templates servono appunto a scrivere delle classi e delle funzioni in cui uno o più tipi di dati sono generici, per cui possono essere usate per qualunque tipo di dati. Puoi trovare numerosi esempi nella STL.