Windows と Mac の間でクロスプラットフォームのコードを書いています。
list::end() が「リストの最後の要素に続く位置をアドレス指定する反復子を返し」、リストを順方向にトラバースするときにチェックできる場合、逆方向にトラバースする最良の方法は何ですか?
このコードは 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ループで実装できる逆方向にトラバースする別の方法はありますか?