2010-03-13 34 views

回答

8

std::map不是一個哈希表。它通常以平衡二叉樹的形式實現。你想要的是std::unordered_map *。

而對於std::unordered_map,C++只定義了內部類型和常見值的散列值,如std::string。你需要自己實現struct { int16_t v[4]; };的哈希函數。您可以在計算中將此結構投射到int64_t,那麼哈希速度將不會有任何差異。


(*:== == std::tr1::unordered_mapboost::unordered_map__gnu_cxx::hash_map == stdext::hash_map等)

(**:16年8月20日類模板hash:... 整數類型(3.9。 1),浮點類型(3.9.1),指針類型(8.3.1),和std::stringstd::u16stringstd::u32stringstd::wstringstd::error_codestd::thread::idstd::bitset,和std::vector<bool>。)

+3

+1表示性感的腳註。 – GManNickG 2010-03-13 19:23:49

+1

爲GMan +1找到性感的腳註。 – Patrick 2010-10-05 12:02:35