我在Windows和Mac之間編寫了一些跨平臺的代碼。你如何通過STL列表向後迭代?
如果list :: end()「返回一個迭代器來處理列表中最後一個元素的後續位置」並且可以在向前遍歷列表時檢查,那麼向後遍歷的最佳方法是什麼?
此代碼workson在Mac而不是Windows上(不能超過遞減第一要素):
list<DVFGfxObj*>::iterator iter = m_Objs.end();
for (iter--; iter!=m_Objs.end(); iter--)// By accident discovered that the iterator is circular ?
{
}
這適用於Windows:
list<DVFGfxObj*>::iterator iter = m_Objs.end();
do{
iter--;
} while (*iter != *m_Objs.begin());
有另一種方式來遍歷落後是可以在for循環中實現?
這隻會是一個實現的意外,你的第一個例子(循環迭代器,比較end())將工作。 – Justsalt 2008-10-09 20:23:53