国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

hash_map,unordered_map的使用

2019-11-08 18:21:29
字體:
來源:轉載
供稿:網(wǎng)友

C++ STL中的set,multiset,map和multimap實現(xiàn)基于紅黑樹,插入和查找的復雜度均為logn

hash_map

和map不同的是hash_map是基于哈希表實現(xiàn)的,查找復雜度位o(1),插入略慢,還沒有測試,插入后不進行自動排序

使用命名空間__gnu_cxx

hash_map不是標準的庫,對std::string和long long的支持有點問題

如果要用string和long long需要做以下修改

使用string

namespace __gnu_cxx{    template<> struct hash< std::string >    {        size_t Operator()( const std::string& x ) const        {            return hash< const char* >()( x.c_str() );        }   };}

使用long long

 namespace __gnu_cxx{     template<> struct hash<long long>    {        size_t operator()(long long x) const        {            return x;        }    };}c++代碼使用樣例

#include<iostream>#include<hash_map>namespace __gnu_cxx{    template<> struct hash< std::string >    {        size_t operator()( const std::string& x ) const        {            return hash< const char* >()( x.c_str() );        }   };template<> struct hash<long long>    {        size_t operator()(long long x) const        {            return x;        }    };}using namespace std;using  namespace __gnu_cxx;int main(){    hash_map<string,int>a;    hash_map<long long,long long>b;    return 0;}unordered_map

unordered_map是C++11的新特性支持string和long long,和hash_map類似,就不在多解釋了,已經(jīng)引入標準庫函數(shù),推薦使用。

需要使用std::tr1命名空間

C++代碼使用

#include<iostream>#include<tr1/unordered_map>using namespace std;using  namespace std::tr1;int main(){    unordered_map<string,long long>a;    return 0;}

至于set,multiset和multimap,內(nèi)容和map類似,這里就不在贅述;

按照情況利用hash_map和map會極大提高程序效率


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 扬州市| 蓝山县| 万全县| 太和县| 白城市| 石楼县| 临沂市| 辽宁省| 庆阳市| 江西省| 罗田县| 三穗县| 通海县| 龙州县| 福安市| 沧州市| 陆丰市| 乃东县| 卢湾区| 黔南| 肃宁县| 金溪县| 无为县| 辽阳市| 黔西县| 当涂县| 阳谷县| 韶山市| 望谟县| 西平县| 沁阳市| 咸阳市| 石台县| 米脂县| 沾化县| 宝鸡市| 吐鲁番市| 太白县| 南涧| 淳安县| 五华县|