首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

std:map 迭代指针出错?该如何处理

2012-02-27 
std::map 迭代指针出错?for(std::mapINT,tagUrlInfo::iteratorpm_ctlRequest.end()p!m_ctlRequest.be

std::map 迭代指针出错?
for(std::map<INT,tagUrlInfo>::iterator p = m_ctlRequest.end(); p!=m_ctlRequest.begin(); --p)  
  {  

  if(p->second.url.Compare(Url)==0)
{
return p->second.session;

break;
}
}

只有23组数,P竟然包括负数,提示错误的指针,弹出对话框“map/set iterator not dareferencable”?不知怎么改才不出错?

[解决办法]
std::map<INT,tagUrlInfo>::iterator p = m_ctlRequest.end()
p--;
for(; p!=m_ctlRequest.begin(); --p)
{
....
}
[解决办法]
end()返回的迭代器只起到“哨兵”的作用,不能进行解引用操作。
其实用reverse_iterator更加自然:
for(std::map<INT,tagUrlInfo>::reverse_iterator p = m_ctlRequest.rbegin(); p!=m_ctlRequest.rend(); ++p)
[解决办法]

探讨
std::map<INT,tagUrlInfo>::iterator p = m_ctlRequest.end()
p--;
for(; p!=m_ctlRequest.begin(); --p)
{
....
}

热点排行
Bad Request.