当前位置: 首页 > news >正文

做计算机网站绍兴网站建设报价

做计算机网站,绍兴网站建设报价,百度投诉中心电话24个小时,公司官网首页unordered_map 类模板和 map 类模板都是描述了这么一个对象&#xff1a;它是由 std::pair<const Key, value> 组成的可变长容器&#xff1b; 这个容器中每个元素存储两个对象&#xff0c;也就是 key - value 对。 1. unordered_map 在头文件上&#xff0c;引入 <unor…

unordered_map 类模板和 map 类模板都是描述了这么一个对象:它是由 std::pair<const Key, value> 组成的可变长容器;

这个容器中每个元素存储两个对象,也就是 key - value 对。

1. unordered_map 

在头文件上,引入 <unordered_map> 来使用它。对于 unordered_map 而言,最大的特点在于内部实现上,使用到了「哈希表」(散列表、hash_table )来进行映射存储,它的模板类声明及其参数如下:

/*** 程序来自STL源码 bits/unordered_map.h*/
template<typename _Key,  // key 类型 typename _Tp,    // value 类型typename _Hash = hash <_Key>,     // 哈希函数typename _Pred = equal_to <_Key>, // 用于比较两者是否相同的函数typename _Alloc = allocator <std::pair<const _Key, _Tp>>> // 分配器,描述了容器在内存管理上的细节,不应该自己来处理,除非写自己的容器
class unordered_map {
};

在 unordered_map 内部,使用的 Hash Table 对数据进行组织,通过把键值 key 映射到 hash 表中的一个位置进行访问,根据 hash 函数的特点, unordered_map 对于元素查找的时间复杂度可以达到 O(1) ,但是,它的元素排列是无序的。具体例子如下: 

int main() {using namespace std;// 首先创建一个无序 map,它的 key 使用 int 类型,value 使用 string 类型unordered_map<int, string> unorderedMap;    // 三种插入新元素的方法,“茴”字有三种写法~unorderedMap.insert(make_pair(0, "Alice")); unorderedMap[1] = "Bob";unorderedMap.insert(unordered_map<int, string>::value_type(2, "Candy"));// 对内部元素挨个输出for (auto iter = unorderedMap.begin(); iter != unorderedMap.end(); iter++) {cout << iter->first << " - " << iter->second << endl;/** >: 输出如下,可以得知它们在 key 的排序上并没有顺序* 2 - Candy* 0 - Alice* 1 - Bob*/}
}

unordered_map 由于建立了哈希表,所以它在最开始建立的时候比较耗时间,但是它查询速度快呀~,一般情况下用 unordered_map 是没有问题的。 

2. map 

对于 map 而言,首先在头文件上,引用 <map> 进来,然后使用。它的类模板声明以及部分函数声明如下:

/*** 程序来自C++源码 bits/stl_map.h*/
template<typename _Key,  // key 类型typename _Tp,    // value 类型typename _Compare = std::less<_Key>, // 用于比较两个元素的比较函数typename _Alloc = std::allocator<std::pair<const _Key, _Tp> > > // 分配器,同样的描述了容器在内存管理上的细节,不应该自己来处理,除非写自己的容器
class map {
private:/// 将一个红黑树转换成 [multi]map.typedef typename __gnu_cxx::__alloc_traits<_Alloc>::templaterebind<value_type>::other _Pair_alloc_type;typedef _Rb_tree<key_type, value_type, _Select1st<value_type>,key_compare, _Pair_alloc_type> _Rep_type;
};

在 map 的内部,使用了「红黑树」(red-black tree来组织数据,因此默认的就已经实现了数据的排序。从下面例子中可以看出,它默认实现了在 key 上排序实现递增: 

int main() {map<int, string> mapper;mapper.insert(make_pair(0, "Alice"));mapper[1] = "Bob";mapper.insert(map<int, string>::value_type(2, "Candy"));for (auto &iter : mapper) {cout << iter.first << " - " << iter.second << endl;/** >: 输出如下,很明显的,它们在 key 的排序上是递增排列的* 0 - Alice* 1 - Bob* 2 - Candy*/}
}

不过,在存储上 map 却比较占用空间,因为在红黑树中,每一个节点都要额外保存父节点和子节点的连接,因此使得每一个节点都占用较大空间来维护红黑树性质。 

3. 总结 

 两种数据结构特点如下表格~

unordered_mapmap
查找快,Average:O(1) ,Worst Case:O(n)恒定的 log(n)
插入和上面一样log(n) + 平衡二叉树所用时间
删除和上面一样log(n) + 平衡二叉树所用时间
是否排序不排序排序
实现方法哈希表红黑树
适用于查找操作频率高要求结果有序(按key排序)
http://www.yayakq.cn/news/489515/

相关文章:

  • 民宿网站开发的开题报告温州网站建设定制
  • 最好的免费的黄页网站自考本科报名入口官网
  • 正规的网站建设专业公司上海外贸seo公司
  • 电子商务网站建设需要哪些技术微信app下载安装官方版2022网址
  • Excel怎么做网站链接企业网站建设600元
  • 昆明网站代理昆明专业的网站制作建设
  • php网站开发if的代码广州天河区怎么样
  • 什么网站做执法仪wordpress网址采集
  • 备案名称和网站名称关键词优化推广排名多少钱
  • 国外对网站开发的研究wordpress post请求
  • 百度收录收费 重大网站如何用asp做网站
  • 设计网站推荐理由seo课程总结怎么写
  • 网站的建设属于无形资产网站更改备案信息吗
  • 外部asp网站 asp 内容家教网站怎么做
  • 长沙建站公司装修公司怎样拉客户
  • 贵阳中国建设银行招聘信息网站wordpress hacker
  • 国外怎么做直播网站网络服务器忙3008
  • 营销品牌网站建设如何注册公司邮箱
  • 珠海企业集团网站建设深圳技术支持 骏域网站建设
  • 网站建设服务协议 印花税58黄页
  • 花多少钱能把网站做到页面招聘网站建设的意义
  • 网站顶一下代码东莞好的网站建设效果
  • 新站整站快速排名西安市专业网站建设
  • sharepoint 网站开发东莞网站建设曼哈顿信科
  • 网站制作外包是怎么做的公司禁用网站怎么做
  • 宜昌市做网站浏览器正能量网站免费图片
  • 论坛门户网站开发东营市两学一做考试网站
  • 岱岳区建设信息网站wordpress的退款期限
  • 湖南北山建设集团网站自助网站建设平台
  • win7 asp.net网站架设海外运营是做什么的