다음 코드가 실패하는 이유는 무엇입니까? 당신이 이미 .end()
동일 할 때 for
문의 증가 부분에 itrUICon
를 증가 다음 벡터의 마지막 항목을 삭제하고 있습니다 아마 때문에벡터 요소를 지울 때 프로그램이 깨집니다.
typedef vector<SOCKET /*socket*/> UIConnection;
UIConnection::iterator itrUICon;
for (itrUICon = m_ListUIConnection.begin();itrUICon != m_ListUIConnection.end();itrUICon++)
{
if (*itrUICon == nSock)
{
itrUICon = m_ListUIConnection.erase(itrUICon);
}
}
찰스는 map.TypeDef지도와 함께 작동합니다. GatewayConnection; –
@Chris_vr : 순서를 보존하기 때문에'std :: remove'는 연관 컨테이너에 대해 작동하지 않습니다. 맵에서 요소를 지우더라도 제거 된 요소를 가리키는 반복자가 아닌 다른 반복자를 무효화하지 않기 때문에'mp.erase (it ++); '를 대신 할 수 있습니다. –