指向容器上的对象

时间:2012-11-12 03:34:02

标签: c++ pointers stl containers

这是一种有效的良好做法吗? (假设ARENAPLAYER是结构)

ARENAPLAYER* CArena::GetPlayer( u_long idPlayer )
{
    map<u_long, ARENAPLAYER>::iterator it = m_mArenaMap.find( idPlayer );
    if( it != m_mArenaMap.end() )
        return &it->second;
    return NULL;
}

如果是,指针是否会直接指向地图内的对象?指针所做的任何更改都会改变地图中的对象吗?

2 个答案:

答案 0 :(得分:3)

你可以像这样指向std::map<u_long, AREANPLAYER>内的对象。只要地图存在且地图中的对象没有从地图上删除,地图内的对象就会保持不变。

答案 1 :(得分:1)

绝对没有理由这样做。 operator[]返回对存储值的引用,允许您更改值而不会乱用指针。