是否有一個使用boost lib實現哈希表的簡單例子。我讀的文檔使用boost庫的簡單哈希表
boost::hash<int,std::string> input;
我需要知道,如果我可以使用哈希表如下所示:
input.add<key,instance_of_input_class> //pseudo code
其中輸入類是:
class Input
{
int id;
std::String name;
}
是否有一個使用boost lib實現哈希表的簡單例子。我讀的文檔使用boost庫的簡單哈希表
boost::hash<int,std::string> input;
我需要知道,如果我可以使用哈希表如下所示:
input.add<key,instance_of_input_class> //pseudo code
其中輸入類是:
class Input
{
int id;
std::String name;
}
boost::hash
不是散列表,它只是計算散列值。請參閱Boost documentation瞭解如何將其與無序容器相結合,並閱讀有關如何插入值的容器的documentation。
由於您使用的是typedef
,因此您的評論聲明瞭類型map
,而不是該類型的實例。
您的文章也暗示,也許你甚至不希望/需要boost::hash
,嘗試
std::unordered_map< int, std::string > my_map;
當然,你也可以使用boost::unordered_map
代替std::unordered_map
的情況下,後者不只是工作,或者你不要想要使用它。
現在的方法添加到您的類,允許訪問值:
class Input
{
int id;
std::string name; // note: lowercase string, not String
public:
std::pair< int, std::string > values() const
{
return std::make_pair(id, name);
}
};
,並使用它插入的Input
實例到地圖:
Input my_input;
my_map.insert(my_input.values());
...這是我從文檔中讀取的typedef boost :: unordered_map
呵呵,萬一這是你想知道的事情:是的,'unordered_map'建立了一個哈希表的模型。 – 2013-03-04 13:44:33
現在這是一個有幫助的答案..謝謝@Daniel Frey – 2013-03-04 13:50:50
你需要的是提振:: unordered_map:http://www.boost.org/doc/libs/1_53_0/doc/html/boost/unordered_map.html
順便說一下,現在unordered_map包含在C++ 11中。
我閱讀文檔,但我不能得到任何幫助如何將輸入類添加到哈希表。 – 2013-03-04 13:32:58
'boost'或'std :: unordered_map'模板是一個關聯容器(即它將一個鍵與一個值相關聯)。它是使用哈希表來實現的。你不會顯示你的'Input'類是什麼或者你想如何使用它,所以很難給出比現有答案更詳細的例子。 – Useless 2013-03-04 13:43:50