使用char *作为std :: map中的键
我试图弄清楚为什么以下代码不起作用,我假设使用char *作为键类型是一个问题,但我不知道如何解决它或为什么它发生。我使用的所有其他功能(在HL2 SDK中)使用char*
这样std::string
会导致很多不必要的复杂化。
std::map<char*, int> g_PlayerNames;int PlayerManager::CreateFakePlayer(){ FakePlayer *player = new FakePlayer(); int index = g_FakePlayers.AddToTail(player); bool foundName = false; // Iterate through Player Names and find an Unused one for(std::map<char*,int>::iterator it = g_PlayerNames.begin(); it != g_PlayerNames.end(); ++it) { if(it->second == NAME_AVAILABLE) { // We found an Available Name. Mark as Unavailable and move it to the end of the list foundName = true; g_FakePlayers.Element(index)->name = it->first; g_PlayerNames.insert(std::pair<char*, int>(it->first, NAME_UNAVAILABLE)); g_PlayerNames.erase(it); // Remove name since we added it to the end of the list break; } } // If we can't find a usable name, just user 'player' if(!foundName) { g_FakePlayers.Element(index)->name = "player"; } g_FakePlayers.Element(index)->connectTime = time(NULL); g_FakePlayers.Element(index)->score = 0; return index;}
慕桂英3389331
慕码人2483693
相关分类