`
ouyida3
  • 浏览: 47955 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

再论c++的map使用

    博客分类:
  • c++
阅读更多

 

前天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上一商用,果然就出问题了。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics