Ce faisant fournit quelque chose appelé polymorphisme statique.
Disons que j'ai écrit un algorithme en utilisant une classe de file d'attente. Il a une fonction front() pour obtenir l'élément suivant de la file d'attente, et une fonction enqueue() à ajouter à la fin de la file d'attente. Maintenant disons que j'ai découvert que cette classe de file d'attente est écrite pauvrement et très lentement, et je préfère utiliser std :: vector qui est beaucoup plus rapide (je sais qu'il y a une file d'attente std ::, c'est juste un exemple). Si la seule façon d'obtenir le premier élément d'un vecteur std :: était avec v [0], je devrais passer par mon code et remplacer tous mes appels à front() par [0]. Mais en implémentant front(), std :: vector peut maintenant être un remplacement direct pour ma classe de file d'attente. Le seul code que je dois changer est le type du conteneur dans mon algorithme.
plus intéressant ... pourquoi y a-t-il un front() quand il y a déjà un begin()? – Inverse
@Inverse: parce que les adaptateurs de conteneur 'std :: queue' et' std :: stack' ont 'front()' mais pas 'begin()'. –
Et pour être cohérent avec 'back()', myvector [myvector.size() - 1] 'n'est pas si simple. – dalle