Comment faire pour chaque boucle de la fonction en C++ de travail avec une classe personnalisée

Je suis nouveau à la programmation C/C++, mais j'ai été à la programmation en C# pour 1,5 ans. J'aime le C# et j'aime aussi la Liste de classe, donc j'ai pensé à faire une Liste de classe en C++ comme un exercice.

List<int> ls;
int whatever = 123;
ls.Add(1);
ls.Add(235445);
ls.Add(whatever);

La mise en œuvre est similaire à n'importe quel Tableau de la Liste de classe là-bas. J'ai un T* vector membre où je stocke les éléments, et lorsque ce stockage est sur le point d'être complètement remplis, je le redimensionner.

Veuillez noter que ce n'est pas pour être utilisé dans la production, ce n'est qu'un exercice. Je suis bien conscient de vector<T> et amis.

Maintenant, je veux faire une boucle par les éléments de ma liste. Je n'aime pas utiliser for(int i=0;i<n; i==). J'ai tapé for dans visual studio, attendu pour Intellisense, et il m'a proposé ceci:

for each (object var in collection_to_loop)
{

}        

De toute évidence, cela ne fonctionne pas avec ma Liste de mise en œuvre. J'ai pensé que je pouvais faire quelques macro de la magie, mais cela se sent comme un énorme hack. En fait, ce qui me dérange le plus, c'est en passant le type comme ça:

#define foreach(type, var, list)\
int _i_ = 0;\
##type var;\
for (_i_ = 0, var=list[_i_]; _i_<list.Length();_i_++,var=list[_i_]) 

foreach(int,i,ls){
    doWork(i);
}

Ma question est: est-il possible de faire cette Liste personnalisée de travail en classe avec un foreach-like boucle?

  • vous pouvez écrire un begin() et un end() fonctions de membre et un itérateur de type pour votre classe pour la rendre foreach compatible.