结构体 struct
构造函数
//
数据结构
1.数组
询问(O(1)),修改(O(1)),插入(O(n)),删除(O(n))。
2.链表(双向链表)
可解决数组插入和删除过慢的问题
思路:
链表(元素)的删除(O(1))
链表(元素)的插入(O(1))
链表的查询与修改(O(n))
实现:
3.队列(queue)
实现
手写队列
STL队列
push()向队列加入,pop()删除队首
3.栈(stack)
实现
手写队列
STL队列
top()访问最上层元素
4.双段队列(deque)
STL
5.堆(heap)
堆分为两种:最大堆和最小堆,两者的差别在于节点的排序方式。
在最大堆中,父节点的值比每一个子节点的值都要大。在最小堆中,父节点的值比每一个子节点的值都要小。这就是所谓的“堆属性”,并且这个属性对堆中的每一个节点都成立。
加入一个数,删除最大(最小)的数,访问最大(最小)的数
//
二叉树(一个节点只有两个子节点,先有左子节点,再有右子节点)
//
堆(特殊的二叉树——每个节点值比其二子节点大(小))
实现
插入(O(log2 p))
删除
STL堆(优先队列)
把push的值加负号,可转化为小根堆。
//
重载运算符
const保证x,y的值不会改变,&保证x,y不会被复制从而节省时间
//
6,map——功能强大的数组
只要下标在定义范围内,均合法
STL算法
#include<algorithm>
1.两个数
min(),max()内的变量类型必须一样
2.n个数
翻转
e.g. 1 2 3 4 5 5 4 3 2 1
排序
从小到大
自定义比较函数
从大到小
绝对值从小到大
去重