双向迭代器崩溃
void CChildFrame::OnPreview()
{
// TODO: 在此添加命令处理程序代码
if(g_vHandel.size()<=1)
return;
if(g_vHandel[0]==GetSafeHwnd())
return;
CTestView* pCurrView=(CTestView*)GetActiveView();
ASSERT(pCurrView);
CTestDoc* pTestDoc=pCurrView->GetDocument();
ASSERT(pTestDoc);
POSITION pos=pTestDoc->GetFirstViewPosition();
CTestView* pNextView;
pNextView=(CTestView*)pTestDoc->GetNextView(pos);
vector<HWND>::iterator iter=g_vHandel.begin();
while(pNextView)
{
vector<HWND>::iterator iter2=iter;
//std::advance(iter2,-1);
iter2--; //这里崩溃
if(pNextView->GetSafeHwnd()==*iter2)
{
break;
}
pNextView=(CTestView*)pTestDoc->GetNextView(pos);
++iter;
}
if(pNextView==NULL)
return;
SetActiveView(pNextView);
}