私は、以下の2つの順序付けられていないセットを同等のものとして評価することを期待しましたが、驚くことではありません。これは、2つの文字列が同じハッシュバケットに格納され、演算子==がセット内の項目の順次比較を行うために発生します。これはstd :: unordered_setのバグと見なされるべきですか?誰もこれのための優雅な回避策を持っていますか?これらのC++ STLの順序付けられていないセットは同じではないと考えられるのはなぜですか?
std::unordered_set<std::string> a,b;
a.insert("500666");
a.insert("961021");
b.insert("961021");
b.insert("500666");
if (a == b) // condition is evaulated as false
{
}
C++標準ライブラリの実装を使用しますか?これは、以前のバージョンのVisual C++標準ライブラリ実装(この問題はVisual C++ 2012で修正されました)の既知の問題です。 –
申し訳ありませんが、私はそれを含めるのを忘れました。私はVisual C++ 2010を使用しています。この問題のドキュメントはありますか?私は何かを見つけることができませんでした。ありがとう!! – user1707438
@ user1707438ここでJames '[answer](http://stackoverflow.com/a/2774236/241631)には、 'unordered_set'の等価コンパレータが含まれています。 – Praetorian