はので、私はそうのようなベクトルを保持するベクターを持っている:間違ったラムダの使用量は、
vector<vector<int>> vec;
をそして私はVEC内のベクトルを反復処理とによって削除されますベクトルを決定するために(predが)コンパレータを使用しようとしていますremove_ifを実行して消去します。これまでの私のコードは次の通りです:
vector<vector<int>> deleted_vecs;
vec.erase(remove_if(vec.begin(), vec.end(),
([vec, pred](vector<int> x) {
if (pred(x)) {
return true;
}
else {
deleted_vecs.push_back(x);
return false;
}
},
vec.end())));
私はここで構文を賢明にしていますか?
「if(pred(x))」および「deleted_vecs.push_back(x);」という行にマイコンパイルエラーがあります。私の述語は特にベクトルを取り込むことを意図していますが、私はdeleted_vecsをベクトルとして宣言していますが、predとpush_backに一致する関数呼び出しはありません>。 これは、私がxを宣言した方法に問題があると思うようになりますが、わかりません。
助けていただけたら幸いです!
括弧の使用を確認してください。 –
@JoachimPileborgは、私のコードの誤字です。しかし、私がそれを修正すると、問題は依然として続きます。 – user5482356
あなたは 'vec'をキャプチャする必要はありませんが、' deleted_vecs'をキャプチャする必要があります。つまり、あなたは 'deleted_vecs'のコピーにアイテムを追加し、残りのプログラムはそれを見ません。 –