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

1 c++ iterator stl visual-c++

我有一个在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;
}
Run Code Online (Sandbox Code Playgroud)

这里生成的错误是: 表达式:map/set迭代器不兼容.

Plz帮助我.

阿布舍克

Jam*_*lis 8

你从m_LineComponents容器中得到一个迭代器:

itr = m_LineComponents.find(szDCode); 
Run Code Online (Sandbox Code Playgroud)

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

itr != m_ECodes.end()
Run Code Online (Sandbox Code Playgroud)

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