您的位置:首页 > 其它

STL中的map表的使用问题

2014-02-27 23:34 295 查看
1、map表的插入与数据更新问题

当map表中已经有了某个key值,如果我们再向里面插入同样的key值,我们理所当然的认为,如果Key值存在则更新数据。经测试发现,这种看法是错误的,如果key值存在则会返回失败,不会更新对应的数据。那如何想map表中插入和更新数据呢?应该是要先判断key值是否存在,不存在则Insert插入,存在则Update数据值,相关代码如下所示(用模版实现更通用):

template <class T1,class T2>
void InsertOrUpdateItem( std::map<T1, T2>& mapList, T1 key, T2 tValue )
{
std::map<T1, T2>::iterator iter = mapList.find( key );
if ( iter != mapList.end() )
{
iter->second = tValue;
return;
}
else
{
mapList.insert( iter, std::make_pair( key, tValue ) );
}
}
上述代码是没问题的,考虑的也很周全。其实还有一种最简单的方法,直接这样写就能实现上述两种情况的处理:mapList[key] = Value

2、map表的排序问题

经测试发现,插入map表的数据,会自动排序(即按Value数据值排序)。其实很多时候,我们不想让数据自动排序,或者按照自己的规则排序,则不能用map表,转而使用vector或者list。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: