数据结构

线性数据结构: 数组 , 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;