0

次のように4x3のデータがあると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私の電話の何が問題になっていますか?
  • ベクトルを反復処理しながら、ベクトルから要素を削除しても安全ですか?

多くの場合、私の問題に対するエレガントな解決策も歓迎されます。

4

1 に答える 1

2

私の検索呼び出しの何が問題になっていますか?

あなたはおそらく忘れました#include <algorithm>

ベクトルを反復処理しながら、ベクトルから要素を削除しても安全ですか?

消去-削除のイディオムを調べてください-ベクトル要素の消去には注意が必要です。

于 2012-10-20T22:44:43.657 に答える