残念ながら、この:イテレータをキーとしてunordered_map、イテレータをlong longにキャストしますか?
unordered_map<list<int>::iterator, int> foo;
が動作しない、コンパイラは言う:エラーC2338:C++標準は、このタイプのハッシュを提供していませんが。
はそうではなく
unordered_map<long long, int> foo;
を使用し、単にlong long
にイテレータをキャストするために保存され、ただし64ビット整数のハッシュがあるようですか?
イテレータが指しているオブジェクトのアドレスの使用はどうですか?多分私はそれをキーとして使うことができますか? – testman
これは、イテレータのようにポインタを扱う必要がなければ、うまくいくはずです。好奇心の中で、あなたは何をしようとしていますか?あなたは、あなたがこの問題を解決するもっときれいな方法を見逃しているかもしれないと思うので、あなたの目的を説明する別の質問を投稿したいかもしれません。 – templatetypedef
私は重いオブジェクトのグラフを横断したいので、それらのオブジェクトに対するイテレータのベクトルを持っていますが、幅/深さの最初の検索に逆マッピングも必要です。おそらく効率的なグラフライブラリがありますが、私はこのトラバーサル関数よりもはるかに多くを必要としません。 – testman