|
|
List的用法小探 |
|
|
作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站 |
申请这个blog已经很久了。今天终于静下心来,写点东东。 近期在做2D游戏的开发。 在程序中很多地方用到了List。现在就来简单的谈一谈。做个开始。 :) 我们经常需要遍历一个List。 如下: struct sItem { int x; int y; }; typedef list<sItem> lsItem; typedef list<sItem>::iterator iterItem; lsItem myList; for( iterItem iter=myList.begin(); iter!=myList.end(); iter++ ) { sItem* pItem = (sItem*)&(*iter); //pItem->x........ } 这种方法用的很普遍。 但是,如果我们在遍历得过程中需要对list进行增加或者删减呢? for( iterItem iter=myList.begin(); iter!=myList.end(); iter++ ) { sItem* pItem = (sItem*)&(*iter); if( pItem->x == 1) myList.erase( iter ); } 这种方式显然会出错!因为erase(iter)后,iter已经不知道指向何处。 所以我们可以来使用: iterItem iter = myList.begin(); while( true ) { if( myList.empty() || iter==myList.end() ) break; iterItem iterNext = iter; iterNext++; //对此节点进行处理 if( pitem->x == 1 ) myList.erase( iter ); iter = iterNext;//继续处理下一个节点 } 好了,今天先写到这。 稍后,将放上<<在DirectX中怎么创建自己得类似Windows里面的Control>>。 如有纰漏,请大家指正。 :)
|
|
相关文章:相关软件: |
|