C++ vector容器删除数据

阅读(9554)

vector容器删除数据,由于游标iterator会在元素删除后自动移动到下一个节点,因此只有在不需要删除节点的时候执行iter++;只有vector容器的iterator有这一特性

for(vector<int>::iterator iter = m_vRunningProcess.begin(); iter != m_vRunningProcess.end();)
{
    if(!checkRuningProcess(*iter))
    {
        iter = m_vRunningProcess.erase(iter);
    }
    else
    {
        iter ++;
    }
}
Tags:

已有 3 条吐槽

  1. 郭石 郭石

    可以用general algorithm: remove_if

  2. artzwei artzwei

    v.erase(remove(v.begin(), v.end(), 99), v.end());

  3. artzwei artzwei

    v.erase(remove(v.begin(), v.end(), ele-to-delete), v.end());

    可以这样