とは
operator size_t () const
環境:Visual Studio 2010 Professional
TL; DR
今日は使い方を探していましたstd::tr1::unordered_set
。前回の使い方std::map
を聞いたので、自分で調べてみることにしました。
私はグーグルで検索しましたが、ほとんどの結果から、ハッシュを実行するための構造体があることがわかりました。道は少し複雑に見えたので、探し続けて、ようやく別のアプローチに出くわしました。
実装する必要があります
bool operator == (const edge & another) const
と
operator size_t () const
結果のコードは質問の終わり近くにあります。
==
問題なくおなじみです。size_t
おなじみです。しかし、何operator size_t
ですか?
equals
効果的hashCode
なJavaに従って一緒にオーバーライドする必要があるJavaのようです。しかし、特に名前が。の場合はわかりませんsize_t
。
結果のコードは次のとおりです。完全なプログラムは正常に動作し、正しい出力を生成します。
class edge {
public:
int x;
int y;
edge(int _x, int _y) : x(_x), y(_y) {
}
bool operator == (const edge & another) const {
return (x == another.x && y == another.y);
}
operator size_t () const {
return x * 31 + y;
}
};
もうちょっと:
いいえ
size_t operator () const
コンパイルできません:
error C2143: syntax error : missing ';' before 'const'
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
error C2059: syntax error : '{'
error C2334: unexpected token(s) preceding '{'; skipping apparent function body
でもない
int operator size_t () const
しかし、私が見ているように、関数はを返しますint
。エラーコードは次のとおりです。
error C2549: user-defined conversion cannot specify a return type