国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 旬阳县| 桂平市| 仪陇县| 栖霞市| 玉龙| 南充市| 陇川县| 廊坊市| 秦安县| 塘沽区| 高碑店市| 淮滨县| 乐昌市| 吉水县| 鄂伦春自治旗| 滁州市| 涿鹿县| 准格尔旗| 米泉市| 天全县| 慈溪市| 工布江达县| 福泉市| 隆化县| 宁安市| 炉霍县| 新河县| 肃南| 旅游| 军事| 平泉县| 格尔木市| 佳木斯市| 南宁市| 武汉市| 山东| 五台县| 襄垣县| 和田县| 宣武区| 中超|