在2d向量中找到一个元素然后将其删除

时间:2012-10-20 22:40:00

标签: c++

我们说我的数据是4乘3 vector<vector<int> >

1   2   3
4   5   6
7   8   9
10  11  12

我希望删除包含元素8的每一行,最后结果如下:

1   2   3
4   5   6
10  11  12

我一直在尝试:

for (vector<vector<int> >::iterator it = v.begin(); it != v.end(); it++) {
    if (find(it->begin(), it->end(), 8)) {
        // I will remove the row in here
    }
}

给了我:

error: no matching function for call to 'find(std::vector<int>::iterator, std::vector<int>::iterator, int)'

我对stl没有多少经验,所以我想知道:

  • 我的find电话有什么问题?
  • 在迭代过程中从向量中删除元素是否安全?

Ofc对我的问题任何优雅的解决方案也欢迎..

1 个答案:

答案 0 :(得分:2)

  

我的查找电话有什么问题?

您可能忘了#include <algorithm>

  

在迭代过程中从向量中删除元素是否安全?

查看擦除 - 移除习语 - 擦除矢量元素可能很棘手。