OK, entonces tengo dos clases (completamente diferentes, proyectos diferentes) que usan iteradores ahora. Uno tiene iterator
y reverse_iterator
trabajando según lo previsto, y el otro, uno actual tiene iterator
y un const_iterator
semi-roto (específicamente, porque const_iterator deriva del iterador, el código LinkedList<int>::iterator i = const_list.begin()
es válido y le permite modificar la lista definida constante ...) .
Tengo la intención de agregar los cuatro tipos a esta clase ... Si puedo.¿Cómo aplico el principio DRY a los iteradores en C++? (iterador, const_iterator, reverse_iterator, const_reverse_iterator)
¿Cómo procedo a minimizar el código de copiar/pegar y cambiar solo el tipo de devolución? Cree una clase base como base_iterator
para heredar? Crear un iterator
o const_iterator
y heredar de eso? Heredar de std :: class? Si alguno de estos casos es el "mejor" enfoque, ¿qué código va a dónde?
Quizás ninguna de las alternativas sea buena? Estoy perdido aquí, y no puedo encontrar mucho material de referencia.
Cualquier consejo es apreciado, pero tenga en cuenta que soy nuevo en el tema (tanto iteradores como C++ en general, especialmente OOP). Intenté, en vano, estudiar los archivos de cabecera enviados con GCC; no son exactamente el tutorial que estoy buscando.
implementaciones stdlib son, en general, las malas decisiones que aprender, para cualquier idioma. A menudo necesitan tratar con interfaces externas (por ejemplo, el sistema operativo, otros idiomas), pueden necesitar ser compatibles con versiones anteriores del código de la última década, y otros factores que simplemente no se aplican a usted. En resumen: no están escritos con la enseñanza como objetivo. Un buen libro es imprescindible y te servirá mucho mejor. –