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)
[解决办法]