如何从for循环内的向量/列表中删除特定元素

时间:2020-02-04 21:30:04

标签: c++ stl iterator erase

void one_number_deletion(std::list<int> &tabela)
{

    std::cout << "What value would u like to delete: " << std::endl;
    int value, spr=0;
    std::cin >> value;
    std::list<int>::iterator itr = tabela.begin();
    for (itr; itr!=tabela.end();)
    {



        if (*itr == value)          //do not increment itr in the loop there
        {
            spr = 1;
            //tabela.erase(itr);        //the problem

        }
        else ++itr;

    }
    if (spr == 0) std::cout << "Wrong table value  " << std::endl;

}

这个想法是,我希望用户在矢量/列表中键入10个值,然后让他选择他想删除的1个值。该代码仅显示该函数,该函数从主函数获取列表/向量。一切正常,直到我打开tabela.erase(itr),然后我收到错误,指出迭代器不兼容。我不知道该怎么做。

0 个答案:

没有答案