数据结构
线性数据结构: 数组 , vector(可变长数组) , 双端队列 ,链表
vector:
默认从0开始
vector a(1000); == int a[1000]; 申请了a[0]到a[999]的内存
vector a(1000, 2) 全部赋值为2
a.pushu_back(10) 在未申请的末尾申请一个int类型的变量名,并且赋值为10
a.begin()“首地址”迭代器
a.end()“末地址”迭代器
a.size()长度
for(int x : a)//遍历每一个属于a的元素
sort(a.begin(), a.end())
a.assign(1000, 3)给前1000个数赋值为3,并且在没开空间的情况下补充至1000位
a.resize(100, x)少了补充,多了扣除,补充为x, 一开始默认为0
栈:P1241
后进先出,垃圾桶
stack a;
a.push(x)放入
a.pop()弹出最上面
a.top()返回最上面的内容,类型取决于stack的类型
a.empty()若为空,返回true,否则返回false
a.size()返回栈的长度
队列:
queue q;队列的定义
多一个a.front() a.back() 代表队首与队尾,其余与stack相同
滑动窗口问题:
有一个定长的窗口,窗口由左到右,要一直处理窗口内的信息
双端对列:
a.pop_front()
a.push_front()
a.pop_back()
a.push_back()
链表:使用结构体模拟操作
离散数据结构:
图论:
与数组,其他数据结构不同的是,每个节点是有关系的
描述关系,节点是身份,边是体现关系的
分为有向图,与无向图
权值代表 边或点 的信息
若用n代表点数,m代表边数,当m = n^2 这一数量级时为 稠密图, 否则为稀疏图
连通图:
任意两点之间都有至少一条路径
树:
任何联通的且具有“变得数量恰好为点的数量-1”的图称为树
A?B:C
if(a==true)
B;
else
c;