再论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(pTab->GetInt("ACTION_CODE"),1));

}

 

 

 

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

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

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

果然,换成make_pair就OK了。

 

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

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

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

 

你可能感兴趣的:(再论c++的map使用)