C++ map和hash_map简单对比

C++ map 和 hash_map 对比
map的基本数据结构是平衡二叉树,hash_map的基础数据结构是hash_table哈希表,下面程序展示了向map和hash_map中插入数据消耗时间对比。
数据量较小的时候可以选择map,数据量大、对插入查找效率要求高的时候选择hash_map。

/*************************************************************************
    > File Name: map.cpp
    > Author: chenhui
    > Mail: ********* 
    > Created Time: 2017年12月21日 17:23:34
 ************************************************************************/
#include <iostream>
#include <stdio.h>
#include <map>
#include "../Includes/times.h"
#ifdef __GNUC__
#include <ext/hash_map>
#else
#include <hash_map>
#endif


namespace std
{
using namespace __gnu_cxx;
}


using namespace std;


typedef hash_map<int,int> HASHMAPINT2INT;
typedef map<int,int> MAPINT2INT;


int main()
{


MAPINT2INT mapTest;
int64_t timeBegin = getTimeMsec();
for(int i=0;i<5000000;i++)
{
mapTest[i]=i;
}
int64_t timeEnd = getTimeMsec();
printf("map use time:%d\n",timeEnd-timeBegin);


HASHMAPINT2INT hamp;
timeBegin = getTimeMsec();
for(int i=0;i<5000000;i++)
{
hamp[i]=i;
}
timeEnd = getTimeMsec();
printf("hashmap use time:%d\n",timeEnd-timeBegin);
return 0;

}


下面是在自己机器上运行的结果:

map use time:4972
hashmap use time:1214


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值