Je voudrais passer un conteneur arbitraire comme argument de fonction et le parcourir (pas d'effacement ni de poussée d'éléments). Malheureusement, il semble qu'il n'y ait pas de façon standard de le faire.Existe-t-il un équivalent C++ à l'interface de collection Java pour les classes de conteneur STL?
La première solution qui me vient à l'esprit est une interface (appelons-la CollectionInterface
) implémentée par des classes qui vont envelopper les conteneurs STL. de sorte que la déclaration de fonction ressemblerait à ceci:
f(const CollectionInterface * collection);
Ou, je pensais modèle de méthode, qui a un avantage qu'il maintient la liaison au moment de la compilation:
template <class CONTAINER> void f(const CONTAINER & collection);
Quelle façon pensez-vous est mieux ?
En tant que paramètre pour un modèle de méthode? – doc
@doc: Pour les fonctions de modèle, les fonctions libres ou membres sont souvent préférées en C++ si elles n'ont pas besoin d'être une fonction membre. –