双向队列 deque 和 list

双向队列 deque 和 list

效率l介于ist和vector之间,支持随机访问(比vector效率低,比list高),支持两端插入删除(效率比list低,比vctor高)内部分块存储,结构比较复杂,不做深究

1、需要高效的随即存取,不关心插入和删除的效率,用vector 2、大量的插入和删除,不关心随即存取,用list 3、既需要随即存取,又要两端数据的插入和删除,用deque。

双向队列
deque<T> q 初始化
q.size() 当前队列长度
q.front() 返回队头元素
q.back() 返回队尾元素
q.push_back() 队尾入队
q.pop_back() 队尾出队
q.push_front() 队头队
q.pop_front() 队头出队
q.begin() 返回正向队头迭代器
q.end() 返回正向队尾迭代器
q.rbegin() 返回正向队尾迭代器
q.rend() 返回反向队尾迭代器
[] 存在操作,但效率低

双向队列
deque<T> a 初始化
a.size() 当前list长度
a.front() 返回头部元素
a.back() 返回尾部元素
a.push_back() 尾部添加元素
a.pop_back() 尾部删除元素
a.push_front() 头部添加元素
a.pop_front() 头部删除元素
a.begin() 返回正向list迭代器
a.end() 返回正向list迭代器
a.rbegin() 返回正向list迭代器
a.rend() 返回反向list迭代器
a.resize() 重新分配大小
a.reverse() 翻转链表
a.insert(*it,value) 插入
a.erase(*it) 删除
a.unique() 去重
a.merge(list2) 合并
a.sort() 排序

Bellman-Ford负权值 最短路 模版

1.n个点,m条边,含有负边。
2.外层循环n-1次,内层循环m次,进行松弛
3.添加check变量判断本轮是否进行松弛了,如果未进行松弛则可以提前退出循环
4.处理有向边时,注意u[i]和v[i]的顺序不要颠倒

 

优先队列使用

优先队列详解和使用

1.优先队列和普通队列相似,但是出队按照优先级高的先出队,进队和出队时间复杂度都为O(log2n)。

2.因为内部原理是用堆实现,插入时候把堆调整(花费o(log2n)),删除时直接删除堆顶(O(1)),然后把剩下元素调整(O(long2 n))。把一个原始无序集合,通过完全二叉树够造成堆花费O(nlog2n)。

3.(1).适用于动态添加和删除时,实时维护最值。(2).也可用于n个元素取前k个(比如10G的数据,取前100个最值,在内存不够情况下,只需要开辟100个数据的堆空间,把这10G数据依次读取进/出优先队列(堆),即可解决内存的问题,而且时间复杂度在nlong2k)。

 

c++为例
初始化 priority_queue<T> q;
入队 q.push();
出队 q.pop();
队头( 优先队列队头是top,普通的是front ) q.top()
元素个数 q.size();
判断队是否空 q.empty();

根据日期计算周几星期几

根据日期计算周几星期

1.根据基姆拉尔森计算公式枚举即可
2.W = (d+2m+3(m+1)/5+y+y/4-y/100+y/400) % 7
3.注意:在公式中有个与其他公式不同的地方:把一月和二月看成是上一年的十三月和十四月例:如果是2018-1-1则换算成:2017-13-1来代入公式计算。

 

CLion 一个工程 运行多个 main cpp 文件

  1. 新建.cpp文件。例如 ,在工程所在文件夹上右键新建 main2.cpp 和main3.cpp。

  2. 修改 CMakeLists.txt 文件。添加红色框框中的内容,code2、code3为编译生成的文件名(自定义即可),然后点击右上角,重新加载或自动加载。
  3. 在右上角在即选择要编译运行的文件即可。

如果出现运行和代码不匹配情况,需要在这里设置一下,使 Target和Executable一致即可

Xcode 一个工程下添加多个 main cpp 文件

sublime mac 快捷键

sublime mac 快捷键

符号说明

符号 说明
command
control
option
shift
enter
delete

打开/关闭/前往

快捷键 功能
⌘⇧N 打开一个新的sublime窗口
⌘N 新建文件
⌘⇧W 关闭sublime,关闭所有文件
⌘W 关闭当前文件
⌘P 跳转、前往文件、前往项目、命令提示、前往method等等(Goto anything)
⌘⇧T 重新打开最近关闭的文件
⌘T 前往文件
⌘⌃P 前往项目
⌘R 前往method
⌘⇧P 命令提示
⌃G 前往行
⌘KB 开关侧栏
⌃` 打开控制台
⌃- 光标跳回上一个位置
⌃⇧- 光标恢复位置

编辑

快捷键 功能
⌘A 全选
⌘L 选择行(重复按下将下一行加入选择)
⌘D 选择词(重复按下时多重选择相同的词进行多重编辑)
⌃⇧M 选择括号的内容
⌘⇧↩ 在当前行前插入新行
⌘↩ 在当前行后插入新行
⌃⇧K 删除行
⌘KK 从光标处删除至行尾
⌘K⌫ 从光标处删除至行首
⌘⇧D 复制(多)行
⌘J 合并(多)行
⌘KU 改为大写
⌘KL 改为小写
⌘C 复制
⌘X 剪切
⌘V 粘贴
⌘/ 注释
⌘⌥/ 块注释
⌘Z 撤销
⌘Y 恢复撤销
⌘⇧V 粘贴并自动缩进
⌘⌥V 从历史中选择粘贴
⌃M 跳转至对应的括号
⌘U 软撤销(可撤销光标移动)
⌘⇧U 软重做(可重做光标移动)
⌘⇧S 保存所有文件
] 向右缩进
⌘[ 向左缩进
⌘⌥T 特殊符号集 ˇ
⌘⇧L 将选区转换成多个单行选区

查找/替换

快捷键 功能
⌘f 查找
⌘⌥f 查找并替换
⌘⌥g 查找下一个符合当前所选的内容
⌘⌃g 查找所有符合当前选择的内容进行多重编辑
⌘⇧F 在所有打开的文件中进行查找

拆分窗口/标签页

快捷键 功能
⌘⌥[1,2,3,4] 单列、双列、三列、四列
⌘⌥5 网格(4组)
⌃[1,2,3,4] 焦点移动到相应的组(分屏编号)
⌃⇧[1,2,3,4] 将当前文件移动到相应的组(分屏编号)
⌘[1,2,3,4] 选择相应的标签页

快捷操作

快捷键 功能
⌘⌃上下键 两行交换位置
⌘KB 显示/隐藏侧边

文章转载自 https://www.jianshu.com/p/6185dc5eb507

mysql 数据库维护

数据库维护

 

mysql 登陆及常用命令

登陆及常用命令

 

mysql 数据类型

数据类型

 

mysql 表结构

表结构