Estoy escribiendo algunos códigos multiplataforma entre Windows y Mac.¿Cómo se itera hacia atrás a través de una lista STL?
If list :: end() "devuelve un iterador que dirige la ubicación que sucede al último elemento en una lista" y se puede verificar al atravesar una lista, ¿cuál es la mejor forma de retroceder?
Este código workson el Mac, pero no en Windows (no se puede decrementar allá primer elemento):
list<DVFGfxObj*>::iterator iter = m_Objs.end();
for (iter--; iter!=m_Objs.end(); iter--)// By accident discovered that the iterator is circular ?
{
}
esto funciona en Windows:
list<DVFGfxObj*>::iterator iter = m_Objs.end();
do{
iter--;
} while (*iter != *m_Objs.begin());
¿Existe otra forma de recorrer hacia atrás que podría implementarse en un bucle for?
Sería solo un accidente de implementación que tu primer ejemplo (iterador circular, comparando con end()) funcionaría. – Justsalt