原因はhash関数の指定にあるようで、unordered_set<MyData, 以降の部分にhash_value関数を指定したいのですが、どのように指定したらよいのでしょうか。
よろしくお願いします。
ちなみに、用いているコンパイラは
g++ (Ubuntu 4.6.0-3~ppa1) 4.6.1 20110409 (prerelease)
で、
コンパイルの際にオプション
-std=gnu++0x
を付けています。
unordered_set<string>などは(別のハッシュ関数の指定方法はわかりませんが)正常に動作します。
#include<iostream>
#include<unordered_set>
using namespace std;
struct MyData{
int x;
bool operator==( const MyData& rhs ) const
{
return x==rhs.x;
}
};
size_t hash_value( const MyData& d ){
size_t h = 12345;
return h;
}
int main()
{
unordered_set<MyData> s;
MyData d;
d.x=3333;
s.insert(d);
// s.insert(d);
cout << s.size() << endl;
}