C++ STL中的map表的使用问题

        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。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dvlinker

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值