VC ++ 2008错误映射/设置迭代器不兼容

时间:2011-02-10 10:03:04

标签: c++ visual-c++ stl iterator

我有一个在VC ++ 2003 .Net上运行良好的项目。但我已将其升级到VC ++ 2008然后成功编译。现在,我执行了它&它在以下代码中崩溃:

CString szDCode(_T("E007"), _T("****"));
map<CString, CString>::iterator itr;
itr = m_ECodes.find(szDCode);
if(itr != m_ECodes.end())
{   
  szDCode = (*itr).second;
  itr = m_LineComponents.find(szDCode);
  if(itr != m_ECodes.end()) // This line is creating Error, While I have 4-5 items in it.
    szDCode = (*itr).second;
}

这里生成的错误是: 表达式:map / set iterators不兼容。

Plz帮帮我。

阿布舍克巴克

1 个答案:

答案 0 :(得分:8)

您从m_LineComponents容器中获取迭代器:

itr = m_LineComponents.find(szDCode); 

您尝试将此迭代器与m_ECodes容器中的迭代器进行比较:

itr != m_ECodes.end()

您只能比较同一容器中的两个迭代器。较新版本的Visual C ++包括标准库中的检查,可帮助您查找此类错误。代码永远不正确。