2011年11月21日 星期一

C++容器用法



//MAP----------------------------------------------------------------------------
std::map<RakNet::SystemAddress, Player *> playersMap;
playersMap[packet->systemAddress] = new Player(packet);
void findEveryOne()
{
for(std::map<RakNet::SystemAddress, Player *>::iterator it = playersMap.begin(); it !=
        playersMap.end(); i++)
{
it->second;
}
}
void find()
{
std::map<RakNet::SystemAddress, Player *>::iterator it = playersMap.find(packet->systemAddress);
if(it == playersMap.end())
return;


Player *player = it->second;

playersMap.erase(it);
}






//vector-------------------------------------------------------------------------
std::vector<WorldObject*> needUpdateList;
void Map::addToUpdateList(WorldObject *object)
{
bool add = true;
for (int i = 0 ; i < (int) needUpdateList.size() ; ++i)
{
if (needUpdateList.at(i) == object)
{
add = false;
break;
}
}
if (add)
{
Entity *ent = object->getEntity();
int flag = ent->getQueryFlags() | Data::NEEDUPDATE;
ent->setQueryFlags(flag);
needUpdateList.push_back(object);
}
}
void Map::removeFromUpdateList(WorldObject *object)
{
for (int i = 0 ; i < (int)needUpdateList.size() ; ++i)
{
if (needUpdateList.at(i) == object)
{
printf("remove need update object\n");
needUpdateList.erase(needUpdateList.begin()+i);
objRemoved = true;
break;
}
}
}




//queue-----------------------------------------------------------------------------
std::queue<int> myqueue;


myqueue.push(77);
myqueue.push(16);


// 77-16=61 myqueue.front() is now 61
myqueue.front() = myqueue.front() - myqueue.back();


myqueue.pop();




//硬轉
static_cast<Chest *>(obj)


//分割文字
Ogre::StringUtil::split(name, ",").at(0);


//VS2008小技巧
VAX 超好用 一定要裝 強大智能提示功能
智能提示有時候會失去作用 只要刪除Ogre1_71.ncb就可以回復

沒有留言:

張貼留言