2016-10-08 22 views
0

私は次のコードでそれを挿入し、私は私が私のRectの私のオブジェクトがstd :: setに挿入されないのはなぜですか?

std::set<Rect,rectcomp> _availableRects; 

を保存したい、次のセットを持っているのRectオブジェクトの..

struct rectcomp { 
    bool operator() (const Rect& lhs, const Rect& rhs) const{ 
     return lhs.size.width<rhs.size.width; 
    } 
}; 

を比較するため、以下の構造体を持っています。

void insertPairOfRects(const Rect rect1,const Rect rect2){ 
    _availableRects.insert(rect1); //first line 
    _availableRects.insert(rect2); //second line 
} 

問題は、rect1は常に挿入されますが、rect2は挿入されません。デバッガをステップ実行すると、関数insertPairOfRectsの最初の行の後に、insertPairOfRectsのオブジェクト数の増加がはっきりとわかりますが、2番目の場合はできません。

私は間違いをしていますか?

EDIT:私のコンパレータ機能で間違いがあると思われます。私はセットの前に書かなかったので、おそらくここでは基本的な誤解であると想像しています...

答えて

1

私はちょうどそのrect1.size.width == rect2.size.widthと仮定しようとしています。セットが重複を許可しないため、オブジェクトはセットに挿入されません。長方形を変更するか、より詳細なコンパレータを作成してください。

+1

はい、それが問題でした。あなたは正しいです。私は7分であなたの答えを受け入れることができます.. –

関連する問題