c++ - 删除 vector 元素导致程序崩溃

标签 c++

为什么以下代码会失败?

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);          
    }
}

最佳答案

您必须删除 for 指令中的 ++itrUICon

UIConnection::iterator itrUICon;

for ( itrUICon = m_ListUIConnection.begin();itrUICon != m_ListUIConnection.end(); )
{
    if (*itrUICon == nSock)
    {           
        itrUICon = m_ListUIConnection.erase(itrUICon);          
    }
    else ++itrUICon;
}

关于c++ - 删除 vector 元素导致程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6013969/

相关文章:

c++ - CUDA并行计算加速体积计算

c++ - 如何为包含结构的类声明成员函数?

python - 无法在场景中正确定位 QGraphicsRectItem

c++ - 如何在 C++ 中正确转换结构

c++ - 头文件是如何连接到对应的.cpp文件的?

c++ - 如何在VS 2019的Ninja和Clang上添加包含路径?

c++ - 如何在 linux 中给线程发信号?

c++ - 错误 : variable or field declared void

c++ - 使用-(存档-)gcc命令

c++ - xprintf 不使用标准输出。它如何仍然打印在屏幕上?