栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++数据结构算法

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++数据结构算法

1.vector
底层是数组,连续内存空间,当内存不够时重新申请2倍的空间,原来数据复制过去,原空间清空

2.map multimap
STL的关联容器,map不允许key重复,multimap允许key重复。(key- value)
内部元素有序,红黑树可以自动排序(以key为序排列)
底层原理是使用了 红黑树,O(logN)的查找 插入 删除的速度。

3.unordered_map 和 unordered_multimap
和2中两个对外接口基本一致,底层原理不同,key无序,
底层实现为 hash table,查找效率O(1), 占用内存高。

4.set,multiset
关键字即值,只保存关键字的容器。
set,multiset底层是红黑树,有序存储元素,和map,multimap类似,O(logN),

5.unordered_set,unordered_multiset
底层为hash table

6.priority_queue
优先队列相当于一个有权值的单向队列queue,所有元素按照优先级排列。
priority_queue 根据 堆的规则处理元素间位置,取出最大最小值点时间为O(1),插入删除时间为O(logN)。
底层实现是 heap(堆),最大堆,vector的完全二叉树。
以任何次序将任何元素推入到容器中,取出时一定是按照优先权值最高(或最低)来取的。

  1. list 双向链表,增删频繁时适合用。 查询频繁适合用vector。

8.堆
堆不能算作一种容器(和map vector不同),只能算是组织容器元素的一种特别方式。

大顶堆/小顶堆:每一个节点满足 大于/小于其左右子节点(并非这个堆按照从大到小的顺序排列)

堆排序:堆排序之后的堆,整体才是有序的。

堆:一般用数组 vector来实现的一个具有特殊结构的完全二叉树。(C++ heap用vector实现)

STL封装了在vector进行堆操作的函数,
make_heap,建立堆(大顶堆 less或者 小顶堆greater)
push_heap,在堆中添加元素
pop_heap,在堆中删除元素
sort_heap,堆排序。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/347893.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号