数据结构与算法
xunshuidezhu
这个作者很懒,什么都没留下…
展开
-
无锁队列
cas: bool compare_and_swap(int* ret, int oldval, int newval) { if (*ret == oldval) { *ret = newval; return true; } return false; } gcc cas: bool __sync_bool_compare_an...原创 2020-02-05 12:20:33 · 196 阅读 · 0 评论 -
k-v存储引擎设计
存储引擎设计 存储引擎会设计成k-v,也就是键值对,按时间序列和图像帧以及雷达帧进行存取。核心数据结构采用跳表-哈希表-双向链表,具体分为时间序列-帧序列跳表,通道号(根据通道号可分辨雷达数据or图片数据)哈希表,数据存储链表。时间序列-帧序列跳表的key会分为2个级别,第一个级别的key存储的是时间序列,由于同一时间序存在多个帧序列,而帧序列可以看成时间序列的子序列,因此按第一级跳表可以找到某...原创 2019-10-31 15:46:19 · 634 阅读 · 0 评论 -
位图bitmap数据结构详解与实现
当数据量很大而每个数据的状态又很少的情况时候,可以用位图来设计存储数据的容器。 在地址空间中,栈是向下生长的,如果用int32_t来作为一个存储单元,则每32位可以看作一组,底层的数据结构可以连续的数组,则原本用32个字节才可以表示一个状态现在可以用一个字节表示一个状态。在数据插入位图的时候,用位或运算,在查找的时候,用位与运算。 代码如下: #include <iostream...原创 2019-10-21 15:52:47 · 2236 阅读 · 0 评论 -
环形缓冲区
本来是leetcode 一道题,环形缓冲区也是一样的设计思路,记录一下 class MyCircularQueue { private: vector<int> data; // 存放循环队列的数据 int head; // 循环队列头 int tail; // 循环队列尾 int len; // 循...原创 2019-09-01 19:33:00 · 194 阅读 · 0 评论 -
stl容器内部数据结构
1.vector 底层数据结构为数组 ,支持快速随机访问 2.list 底层数据结构为双向链表,支持快速增删 3.deque 底层数据结构为一个中央控制器和多个缓冲区,详细见STL源码剖析P146,支持首尾(中间不能)快速增删,也支持随机访问...deque是一个双端队列(double-ended queue),也是在堆中保存内容的.它的保存形式如下...原创 2019-09-01 19:38:04 · 286 阅读 · 0 评论