再论c++的map使用

 

前天Rao问我有一段代码运行时卡住了,不知道哪里有问题,我一看代码:

 

m_MPpsDiscntAction.clear();

string sql = "SELECT a.action_code,a.stat_type,a.action_type FROM table_name a where a.stat_type = 1  and  a.action_type in(205,300,301)";

JTable* pTab = jdb::getConnect()->getJTable();

pTab->Clear();

pTab->AddSql(sql);

pTab->ExecSelect();

while(pTab->Fetch())

{

       m_MPpsDiscntAction.insert(pair<int,int>(pTab->GetInt("ACTION_CODE"),1));

}

 

 

 

非常短。因为现象是卡住,我首先怀疑sql运行过慢,他说在plsql运行过了,很快。

而下面的JTable操作都是公司框架的,不会有问题,于是我马上怀疑map的insert有问题。

首先怀疑的就是pair的使用。

果然,换成make_pair<int,int>就OK了。

 

make_pair和pair其实作用类似,make_pair函数是转换为pair对象,而pair是强制的类型转换。

相对来说,一般更推荐用make_pair。

pair在linux在测试过没问题,在aix上一商用,果然就出问题了。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值