我想将一个指针作为键和一个指针作为值插入到 c++ std::map:
class PlayerConnectionContainer{
public:
std::map<Player*,HSteamNetConnection*> playerConnectionMap;
std::vector<Player> players;
};
这是将
HSteamNetConnection
参考插入到地图中的方法
void PlayerConnectionContainer::Append(HSteamNetConnection& connection){
Player newPlayer; // Creating player object
players.push_back(newPlayer); // Pushing the object into the vector
std::cout << &players.begin() << " " << connectionPlayerMap.size() << std::endl; // Starting memory address
connectionPlayerMap.insert(std::make_pair(&connection,&players.begin()));
std::cout << connectionPlayerMap.begin()->second << " " << connectionPlayerMap.size() << std::endl; // Retrived memory address
}
当我运行这个时,我得到以下输出:
0000002A9E8FF2B0 1
0000000000000000 1
我期望获得相同的内存地址,因为地图是空的,我刚刚将这对插入到地图中,但我实际得到的是一个空指针,这似乎令人困惑(而且地图的大小也没有改变) ,表明实际上没有插入任何内容)。 我想,地图可能找不到连接键,但是当运行此搜索时,
if(connectionPlayerMap.find(&connection) == connectionPlayerMap.end())
std::cout << "Could not be found" << std::endl;
找到连接指针作为键。我知道像这样存储原始指针可能不是一个好主意,但我仍然不明白,为什么这不起作用! 预先感谢!