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