2012-01-09 16 views
2

私はイテレータの使用に新しいです。私は、要素がリストに存在するか否かを決定するために、反復子を使用してリスト内のすべての要素を解析以下のコードを使用しています。イテレータの使用 - リント警告

list<int> pendingRsp; 
list<int>::iterator it1; 

for(int i = 1; i <= 5; i++) 
    pendingRsp.push_back(i *10); 

for(it1 = pendingRsp.begin(); it1 != pendingRsp.end(); it1++) 
{ 
    if((*it1) == 50) 
    { 
     found = true; 
     break; 
    } 
} 

コードが正常に動作しますが、私は以下のリント警告取得しています:

情報1702: '!演算子='!演算子を通常の関数「演算子の両方がある=(constのペア< < 1>上記を何、< 2 >> &、constのペア< < 1>、< 2 >> &)」とメンバ関数 'リスト:: const_iteratorの::演算子!=(定数const_iteratorの&)constは'

w arning mean?それは!=リスト中の演算子とイテレータの実装を演算子オーバーロードの間で競合しますか?

+0

質問には関係ありませんが、forループの代わりに 'std :: find'を使用してください。 –

+0

うんのstd ::見つけるには、より良いものです。提案のおかげで – inquisitive

答えて

3

それが言う正確に何を意味しています。リスト反復子はpairで、pairoperator!=関数ですが、リスト反復子クラスも独自のoperator!=関数を持っています。両方の演算子が正確に同じことをするので(2番目の要素で一致する2つのペアが2番目の要素と一致するため)、警告を無視しても問題ありません。

+0

返信ありがとう – inquisitive

+0

そのため、私たちはpublic継承ではなく、compositionを使用しています。 –