0

假设我的数据为 4 x 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 对我的问题的任何优雅解决方案也受到欢迎。

4

1 回答 1

2

我的 find 电话有什么问题?

你可能忘了#include <algorithm>

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

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

于 2012-10-20T22:44:43.657 回答