unordered_map的存储位置

汤姆

我正在学习C ++,并尝试制作PlayerInfo的unordered_map,这是因为我可以将其用作动态内存。我已经到了这个阶段,我正在尝试加深我的知识,并在我的实际项目中使用它。

为此,我需要一个表示GetPlayerPointer(int playerid);的函数。而我想要做的就是返回列表中的位置,以便通过一段代码使它变得更加清晰。

??? GetPlayerPointer(int playerid)
{
     auto point = BasicPlayerInfo.find(playerid);
     return point->second;
}

然后,这将允许我做类似的事情

Player = GetPlayerPointer(playerid);
Player.Score = 10;

我至少要针对这些方面的目标。

真的很抱歉问您,也谢谢您的帮助。

实际代码:

struct pBasicInfo
{
    bool IsLoggedIn         = false;
    bool Spawned            = false;
    int AdminLevel          = 0;
    std::string PlayerName;
};
extern std::unordered_map<int, pBasicInfo> BasicPlayerInfo;

//CreatePlayer
        pBasicInfo SetupPlayer;
        SetupPlayer.IsLoggedIn = true;
        SetupPlayer.Spawned = false;
        SetupPlayer.PlayerName = GetName(playerid);
        BasicPlayerInfo.insert(std::pair<int, pBasicInfo>(playerid, SetupPlayer));
斯拉瓦

返回引用,但是您必须检查对象是否在地图中,如果不是,请执行以下操作:

pBasicInfo &GetPlayer(int playerid)
{
     auto point = BasicPlayerInfo.find(playerid);
     if( point == BasicPlayerInfo.end() )
         throw std::runtime_error( "player not found" );
     return point->second;
}

auto &player = GetPlayer( 123 );
player.Score = 10;

或者您可以返回指针,如果找不到返回的玩家nullptr,则呼叫者将必须检查:

pBasicInfo *GetPlayerPointer(int playerid)
{
     auto point = BasicPlayerInfo.find(playerid);
     if( point == BasicPlayerInfo.end() )
         return nullptr;
     return &point->second;
}


auto player = GetPlayerPointer( 123 );
if( player ) player->Score = 10;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章