Piszę kod między platformami między Windows i Mac.Jak wykonać iterację wstecz za pośrednictwem listy STL?
Jeśli list :: end() "zwraca iterator, który adresuje lokalizację po ostatnim elemencie na liście" i może być sprawdzany podczas przewijania listy do przodu, jaki jest najlepszy sposób przechodzenia wstecz?
Ten kod workson Mac, ale nie na systemie Windows (nie może zmniejszyć się poza pierwszym elemencie):
list<DVFGfxObj*>::iterator iter = m_Objs.end();
for (iter--; iter!=m_Objs.end(); iter--)// By accident discovered that the iterator is circular ?
{
}
to działa w systemie Windows:
list<DVFGfxObj*>::iterator iter = m_Objs.end();
do{
iter--;
} while (*iter != *m_Objs.begin());
Czy istnieje inny sposób na przechodzenie do tyłu, że może być zaimplementowany w pętli for?
Byłby to tylko przypadek wdrożenia, że twój pierwszy przykład (iterator cykliczny, porównując z end()) będzie działać. – Justsalt