![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 76
WavenZ
北航硕士
展开
-
levelDB 源码分析之 SSTable
1 SSTable 基本组成SSTable 是 levelDB 磁盘上存储数据的结构。SSTable 分为不同的层次,其中除了第 0 层的 SSTable 之外,其他各层的 SSTable 中数据的 key 的范围没有任何重叠,并且各个 SSTable 内部数据按照 key 有序排列:对于 levelDB 中的单个 SSTable,其内部数据也是根据 key 的大小有序排列的。对于 level0 的单个 SSTable ,它是将 memtable 持久化到磁盘中形成的,其格式如下:SSTable原创 2021-11-01 10:43:18 · 937 阅读 · 0 评论 -
Linux 下利用 gdb 查看 C++ 对象内存分布
Linux(ubuntu16.04) 下利用 gdb 查看 C++ 对象内存分布1. 安装 gdb (已安装请跳过)2. 利用 gdb 查看对象内存分布1. 安装 gdb (已安装请跳过)1. 安装 gdb$ sudo apt-get update$ sudo apt-get install gdb2. 添加 -m32 编译支持$ sudo apt-get install build-essential module-assistant $ sudo apt-get install gcc原创 2020-07-04 18:33:07 · 3842 阅读 · 0 评论 -
Algo~
熟读并背诵全文。1. 并查集int find(int x) { return pre[x] == x ? x : pre[x] = find(pre[x]); }void merge(int a, int b){ pre[find(a)] = find(b);}2. 快排稳定性:不稳定时间复杂度:O(n2)/O(nlgn),空间复杂度:O(1)int partition(int* vec, int start, int end){ int pos = star原创 2020-06-09 20:05:10 · 276 阅读 · 0 评论 -
STL之算法
STL算法STL算法库STL算法分类非更易型算法更易型算法移除型算法变序型算法排序算法已排序区间算法数值算法STL算法库STL库中关于算法的内容大部分包含在<algorithm>、<numeric>和<algorithm>中,其中<algorithm>包含了大多数算法的函数,而一些关于数值处理的函数在<num原创 2018-11-11 15:57:50 · 268 阅读 · 0 评论 -
C/C++编译过程
C/C++编译过程1. 编译型语言和解释型语言1. 编译型语言和解释型语言如我们所知,计算机只能接受二进制代码,这种用0/1表示的二进制代码被成为机器指令。在众多编程语言中,汇编语言与机器指令相对应,它因直接操作计算机硬件而具有很高的运行效率。对开发者更加友好的是如C/C++、java和python等高级语言。但由于高级语言是无法直接被计算机理解的,因此需要把高级语言翻译为机器语言。将高级...原创 2018-11-13 21:39:58 · 813 阅读 · 0 评论 -
C++之lambda表达式
Lambda表达式什么是Lambda表达式?Lambda表达式的结构参数列表返回值类型捕获列表什么是Lambda表达式?在介绍lambda表达式前先看下面这个例子:int main() { [](){}; return 0;}没错,括号三巨头(中括号、小括号、大括号)就是一个lambda表达式。这个lambda表达式没有函数名、没有参数、也没有函数体,但这三个括号对应了lambda...原创 2018-11-12 12:48:43 · 4408 阅读 · 0 评论 -
Ubuntu16.04下配置VScode的C/C++开发环境
VScode环境搭建1.Vscode安装2.Vscode环境配置安装c/c++插件建立工程1.Vscode安装Visual studio code是微软发布的一个运行于 Mac OS X、Windows和 Linux 之上的,针对于编写现代 Web 和云应用的跨平台源代码编辑器。第一种方式是从VScode官网下载.deb文件,然后双击该文件会打开软件中心进行安装。另一种方式是通过Term...原创 2018-11-14 15:51:58 · 92451 阅读 · 44 评论 -
Win10下配置VScode的C/C++开发环境
VScode环境搭建1. MinGW安装配置MinGW下载安装设置环境变量2. Vscode安装配置Vscode安装安装C/C++插件新建C/C++工程启动配置文件(launch.json)## 添加编译任务(tasks.json)1. MinGW安装配置MinGW下载安装MinGW是什么这里就不进行介绍了,下面直接进入安装的正题。MinGW的下载链接:https://osdn.net/pr...原创 2018-11-16 14:05:07 · 6492 阅读 · 6 评论 -
C++之类型推导
C++类型推导原创 2019-07-08 11:25:02 · 1279 阅读 · 0 评论 -
STL之迭代器
C++迭代器迭代器(iterator)迭代器操作迭代器分类容器的迭代器支持迭代器实例(以vector为例)迭代器失效迭代器(iterator)在前面我们已经看到,迭代器被用来访问容器中的元素。在使用迭代器的方式上来看,和指针非常的类似,甚至于就已经当作指针来使用了。事实上,迭代器的作用就是为了提供一种访问数据的方式。容器(container)作为标准模板库中的一个核心内容,给我们提供了非常强...原创 2018-11-11 15:23:29 · 208 阅读 · 0 评论 -
STL之容器
STL容器STL容器顺序容器vector(向量)list(列表)deque(双端队列)关联容器set(集合)map(映射)容器适配器stack(栈)queue(队列)priority_queue(优先队列)总结STL容器在现实生活中,容器是用来装其他东西的器具。在C++中,容器就是能容纳其他对象的对象。STL中提供了丰富的容器,并且它们都是泛型容器,可以容纳不同的数据类型。STL中定义的容器...原创 2018-11-11 15:19:40 · 600 阅读 · 0 评论 -
C++之面对对象特性
C++与C语言最大的不同是,C语言是面向过程的语言,而C++是面向对象的语言。面向过程编程(OPP)是一种以过程为中心的编程方法,它在解决问题的时候专注于发生的问题、解决的方法以及处理的步骤。而面对对象编程(OOP)是以事物为中心的编程思想,它在于将问题所涉及的对象、对象的行为等进行抽象。抽象的目的在于更好的描述问题,从而能够更好的分析问题和解决问题。面向过程思想解决问题采取的策略一般为自顶向下...原创 2018-11-10 20:18:36 · 173 阅读 · 0 评论 -
C++之头文件的变化
C中的头文件在C语言中,当用到标准输入输出时(实际上大多数情况都需要用到),需要包含头文件<stdio.h>;当用到字符数组相关操作时,需要包含头文件<string.h>;当需要用到数学函数相关操作时,需要包含头文件<math.h>等原创 2018-11-10 21:00:24 · 247 阅读 · 0 评论 -
C++之命名空间
命名空间C++标准程序库中的所有标识符都被定义在一个名为std的namespace中。因此,我们可以把命名空间简单的理解为名称的集合。这里空间的概念和数学中的向量空间有着异曲同工之妙,将需要研究的一类事物进行封装,使得不同程序库中名称相同的元素能够区分开来。例如:数学中向量乘法和数值乘法计算是不同的,但它们可以有相同的名字(乘法)。同理,程序库lib_a和程序库lib_b中也可以有相同的类或者...原创 2018-11-10 21:37:48 · 135 阅读 · 0 评论 -
C++之标准程序库
标准程序库C++中的标准程序库是类库和函数的集合,其使用核心语言写成。标准程序库提供若干泛型容器、函数对象、泛型字符串和流(包含交互和文件I/O),支持部分语言特性和常用的函数,如开平方根。C++标准程序库也吸收了ISO C90 C标准程序库。标准程序库的特性声明于std命名空间之中。从上面这个定义来看,C++标准程序库提供了非常强大的功能,它既包含C语言的程序库,也具有非常多C++独有的一些...原创 2018-11-10 21:47:11 · 693 阅读 · 0 评论 -
C++之引用
C++引用1.指针与引用2.引用3.引用传递4.引用作为函数返回值5.总结1.指针与引用在C语言中,经典的交换变量值的程序如下,这里采用的是地址传递的方式:#include <stdio.h>void swap(int *a, int *b);int main() { int a = 3, b = 4; swap1(&a, &b); printf("%d...原创 2018-11-11 11:54:52 · 140 阅读 · 0 评论 -
C++之字符串
C++字符串C中的字符串C中的字符串C语言中不提供字符串类型,因此所谓的字符串不过是一组以’\0’结尾的字符序列。C语言中通常以char型的数组来存储字符串,如下例:#include &lt;stdio.h&gt;#include &lt;string.h&gt;int main(){ char s[] = "Hello World!"; printf("%s\nLengt原创 2018-11-11 13:17:48 · 299 阅读 · 0 评论 -
C++之结构体与类
C++中的结构体与类对比C语言中的结构体构造函数与析构函数为什么需要构造函数构造函数的特点构造函数的重载析构函数结构体与类的区别总结对比C语言中的结构体在C语言中,我们经常定义结构体来作为数据结构,而C++也支持定义结构体。C++中的结构体与C语言中的结构体主要有以下几点区别:1.C语言需要使用struct structNme来定义结构体,而C++可以直接用structName来定义结构体名...原创 2018-11-11 14:41:53 · 437 阅读 · 0 评论 -
C++之重载运算符
C++重载运算符重载运算符C++中很多内置数据类型都支持如"+"、"-"、"="、"<"等运算符,这使得表达式非常的简洁。但很多情况下,我们也希望自已定义的一些数据结构也支持类似的运算符。C++提供了这样一种机制,支持我们在不同的数据类型下对运算符进行重载,于是我们可以让自己定义的数据类型同样支持运算符。下面列出C++支持重载的运算符:类型运算符双目算术运算符+(...原创 2018-11-11 14:52:19 · 682 阅读 · 0 评论 -
C++之模板
C++模板模板的引入函数模板与类模板模板的引入在讨论模板之前,先看一下这个经典的交换程序:#include <iostream>using namespace std;void swap1(int& a, int& b) { int temp = a; a = b; b = temp;}int main() { int a = 2, b = 3; s...原创 2018-11-11 14:59:41 · 95 阅读 · 0 评论