没有用于调用std :: vector <int> :: erase(int&amp;)的匹配函数

时间:2016-02-04 12:15:29

标签: c++ vector

我对这段代码有疑问:

for(int i=n;i>0;i--)
        for(int j=0;j<i;j++)
            if(docel[j]==docel[i])
                docel.erase(j);

为什么我的程序无法编译?我也尝试过:

docel.erase(docel.at(j))

1 个答案:

答案 0 :(得分:4)

erase采用迭代器,而不是索引值。一个简单的解决方法是使用docel.erase(docel.begin() + j);

但是你的代码看起来有两个错误:

  1. 如果删除第(j)个元素,请注意不要增加j:你会跳过值。

  2. 如果n中的元素数量减少,您还需要调整docel