2017-11-05 15 views
0

私はC++プログラムを作成しようとしていますが、find_if関数を使用しようとしています。ここでfind_ifエラー:イテレータから実行可能な変換がありません

は私が持っているものです。

enter image description here

そして、ここでは、私が取得エラーです:

enter image description here

私の理解では、find_ifで返されるイテレータは同じではないということです私が宣言しているもの。しかし、私はfind_if hereのC++のドキュメントを読んでおり、これに基づいて私は正しくこれをやっています。 dataはあなたがdata.begin()data.end()を呼び出すときに、あなたが戻ってvector<CDCRecord>::const_iterator Sを得るのではなくvector<CDCRecord>::iterator秒していることを意味し、const vector<CDCRecord>&であること

+4

ここにコード、エラー、サンプルデータ、またはテキスト出力をプレーンテキストとして投稿してください。読みにくい画像ではなく、コピーしてテストコードや回答に使用することはできません。スクリーンリーダーを使用するユーザー質問を編集して、質問の本文にコードを追加することができます。 '{}'ボタンを使ってコードのブロックを整形するか、同じ効果のために4つのスペースをインデントします。 **スクリーンショットをコードとして実行することはできません。** – tadman

+2

'data'パラメータはconst参照によって渡されるので、おそらく' const_iterator'を使う必要があります。しかし、さらに良い方法では、 'auto'を使います。 – jtbandes

+1

エラーが表示されたスクリーンショットに基づいているように見えますが、質問をプレーンテキストとして適切にフォーマットする必要があります。 stackoverflow.comを見渡すと、よく準備された質問のすべてがコードがプレーンテキストとして表示されます。なぜこの質問に対するあなたの質問の例外が当てはまるのか説明していません。フォーマットが間違っている質問には答えが与えられてはなりません。質問をプレーンテキストとしてフォーマットするだけでなく、stackoverflow.comの[help]で説明されているように、質問は[mcve]のすべての要件を満たす必要があります。 –

答えて

0

注意してください。その結果、find_ifの結果を通常の古いiteratorに割り当てようとすると、戻り値の型がconst_iteratorなので、型エラーです。この問題を解決するには

、明示的const_iterator、または単にautoを使用し、あなたのためのコンパイラフィギュアそれアウトを持っていることをイテレータitの種類を変更します。

関連する問題