C++中的哈希容器unordered_map應用示例。本站提示廣大學習愛好者:(C++中的哈希容器unordered_map應用示例)文章只能為提供參考,不一定能成為您想要的結果。以下是C++中的哈希容器unordered_map應用示例正文
跟著C++0x尺度切實其實立,C++的尺度庫中也終究有了hash table這個器械。
良久以來,STL中都只供給<map>作為寄存對應關系的容器,外部平日用紅黑樹完成,聽說緣由是二叉均衡樹(如紅黑樹)的各類操作,拔出、刪除、查找等,都是穩固的時光龐雜度,即O(log n);然則關於hash表來講,因為沒法防止re-hash所帶來的機能成績,即便年夜多半情形下hash表的機能異常好,然則re-hash所帶來的不穩固性在其時是不克不及容忍的。
不外因為hash表的機能優勢,它的應用面照樣很廣的,因而第三方的類庫根本都供給了支撐,好比MSVC中的<hash_map>和Boost中的<boost/unordered_map.hpp>。後來Boost的unordered_map被吸納進了TR1 (C++ Technical Report 1),然後在C++0x中被終究定了尺度。
因而我們如今便可以高興得寫以下的代碼了:
#include <iostream> #include <string> #include <unordered_map> int main() { std::unordered_map<std::string, int> months; months["january"] = 31; months["february"] = 28; months["march"] = 31; months["april"] = 30; months["may"] = 31; months["june"] = 30; months["july"] = 31; months["august"] = 31; months["september"] = 30; months["october"] = 31; months["november"] = 30; months["december"] = 31; std::cout << "september -> " << months["september"] << std::endl; std::cout << "april -> " << months["april"] << std::endl; std::cout << "december -> " << months["december"] << std::endl; std::cout << "february -> " << months["february"] << std::endl; return 0; }