自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 深度剖析STL空间配置器

STL空间配置器:空间配置器(allocator),顾名思义就是用来配置,管理,分配,释放内存空间,它隐藏在一切容器的背后,默默工作,默默付出。1.空间配置器为什么不叫内存配置器: 因为空间不一定是内存,配置的空间可以是内存也可以是硬盘,额是的,SGI STL提供的空间配置器是内存配置的对象,是内存2.为什么要有空间配置器: 小块内存带来的内存碎片问题 ...

2018-07-29 19:44:49 625

原创 C++String浅拷贝&深拷贝&Copy On Write

简单的赋值拷贝class String{public: String(constchar*str) :_str(newchar [strlen(str)+1]) { strcpy(_str,str); } String(constString&str) :_str(str._str) {...

2018-05-05 19:07:49 848

原创 linux学习笔记——进程(一)

学习进程创建, 等待, 终止. 使用代码实现. 编写自主shell. 封装fork/wait等操作, 编写函数 process_create(pid_t* pid, void* func, void* arg), func回调函数就是子进程执行的入口函数, arg是传递给func回调函数的参数. 调研popen/system, 理解这两个函数和fork的区别. 写一篇博客, 总结上述内...

2018-05-05 18:53:37 312

原创 深入理解C++动态内存管理

1. 对比C语言和C++的动态内存管理2. 探索静态内存管理和动态内存管理3. 理解什么是内存泄露及内存泄露的危害4. new/delete 和operator new/operator delete和malloc/free的关系 5. new[]时底层处理的机制 6. new/delete和malloc/free的区别 C语言动态内存管理C语言使用malloc、calloc、...

2018-04-10 16:03:55 630

原创 const&内联&静态成员&友元

1. const成员函数 2. 内联 3. 友元 4. 静态成员const修饰成员函数在成员函数后面加const,const修饰this指针所指向的对象,也就是保证调用这个const成员函数的对象在函数内不会被改变。class Date{public :void Display (){cout<<"Display ()" ...

2018-04-10 15:06:51 242

原创 C++类的默认成员函数详解及内存对齐规则

面向对象程序设计概念:(Object Oriented Programming,缩写:OOP)是一种程序设计范型,同时也是一种程序开发的方法。 对象指的是类的实例,将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性。1. 学习类的6个默认成员函数2. 理解隐含的this指针及传参3. 运算符的重载4. 实现复数类和日期类的默认成员函数及运算符的重载...

2018-04-02 20:08:37 1168

原创 深入探索C++引用的实现原理

引用1.引用的概念及用法 2.引用做参数 3.引用做返回值 4.汇编层看引用的特性 5.引用和指针的区别 1.引用的概念及用法 引用不是定义一个新的变量,而是给一个已经定义的变量重新起一个别名。 定义的格式为:类型 &引用变量名 = 已定义过的变量名;int a = 1;int &b = a;引用的特点: 1. 一个变量可取...

2018-03-30 17:39:18 4364 1

原创 为什么C++支持重载,C语言不支持

我们都知道C++语言支持重载,而C语言不支持 可是为什么C++中可以支持函数重载,而在C语言中不支持呢?函数重载 首先来看,什么是函数重载:在同一作用域类,一组函数的函数名相同,参数列表不同(个数不同/类型不 同),返回值可同可不同。简单的说就是函数名相同,参数列表不同 其实是这样,C++在编译时会对函数名进行优化,对于参数不同的同名函数对应的优化后的函数为_Z[N][fu...

2018-03-30 15:43:53 484

原创 vim常用指令

vim esc 命令模式: i 插入模式: shift : 底行模式光标:j 向下 k 向上 l 向右 h 向左o 在光标所在行的下面插入新行,并进入编辑模式O 在光标所在行的上面插入新行,并进入编辑模式r 替换光标位置上的一个字符gg=G 将代码块格式化缩进yy 拷贝当前行 yyy拷贝当前行和后两行yw 拷贝一个单词 nyw 拷贝n个单...

2018-03-27 21:44:55 189

原创 MATLAB卷积运算(conv)以及通用的卷积函数my_conv的实现

conv(向量卷积运算)两个向量卷积,简单理解其实就是多项式乘法。 比如:p=[1 2 3],q=[1 1]是两个向量,p和q的卷积计算方法如下: 把p的元素作为一个多项式的系数,多项式按升幂(或降幂)排列,比如就按升幂吧,写出对应的多项式:1+2x+3x^2;同样的,把q的元素也作为多项式的系数按升幂排列,写出对应的多项式:1+x。卷积就是“两个多项式相乘取系数”。 (1+2x+3...

2018-03-11 11:24:03 80436 6

原创 排序算法学习之快速排序

快速排序快速排序,简称快排,在排序中,快速排序其实就是我们前面认为最慢的冒泡排序的升级,它们都属于交换排序类。即快排也是通过不断比较和移动交换来实现排序的,不过它的实现,增大了记录的比较和移动的距离,将关键字较大的记录从前面直接移动到后面,关键字较小的从后面直接移动到前面,从而减少了总的比较次数和移动交换次数。 基本思想: 任取待排元素序列中的某元素中的作为基准值,按照该排序...

2018-03-10 22:11:45 400

原创 哈希扩展——位图&布隆过滤器

位图来看一道题:给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这40亿个数中。 要快速判断一个数是否在一组数中:比较快的算法有:平衡搜索树、哈希表等。而这里如果直接建立一个哈希表的话,每个节点存一个数据,对于40亿的数据需要40亿个整型单元,这相当于100+G内存,显然这种方法不可行。 那么,我们便想到能不能用一个bit位来表示一个数存在或者不存...

2018-03-06 00:28:46 360

原创 哈希表的实现(闭散列法和拉链法)

哈希表哈希表(Hash Table)也叫散列表,是根据关键码值(Key Value)而直接进行访问的数据结构。它通过把关键码值映射到哈希表中的一个位置来访问记录,以加快查找的速度。这个映射函数就做散列函数,存放记录的数组叫做散列表。理想的搜索方法:可以不经过任何比较,一次直接从表中得到要搜索的元素。 如果构造一种存储结构,通过某种函数(hashFunc)使元素的存储位置与它的关键码之间能...

2018-03-02 00:07:18 1362

原创 实现左旋字符串中前k个字符的多种方法(交换法、双倍字符串法、翻转)

题目:实现一个函数,可以左旋字符串中的k个字符。 ABCD左旋一个字符得到BCDA ABCD左旋两个字符得到CDAB /* 1.实现左旋字符串中的k个字符 2.判断一个字符串是否为另一个字符串旋转之后的字符串 */#define _CRT_SECURE_NO_WARNINGS#include <s...

2018-02-28 20:28:52 404

原创 函数的调用过程,栈帧的创建和销毁

函数的调用过程,栈帧的创建和销毁 最近总被人问到有关函数传值调用的问题,当然像形参的改变不影响实参,数组的传值会退化成指向数组首元素的一级指针这样的问题尽管我们已经很清楚了,但在调试程序的时候总会发现自己屡屡会犯错。所以深入理解函数的调用过程,栈帧的创建和销毁对于我们非常重要。我们知道每一次函数调用都是一个过程。 这个过程我们通常称之为:函数的调用过程。 这个过程要为函数开...

2018-02-28 20:06:08 387

原创 字符串中第一个只出现一次的字符——剑指offer面试题40

  题目:字符串中第一个只出现一次的字符。   在字符串中找出第一个只出现一次的字,如输入“abaccdeff”,则输出’b’。     很多人读完这道题,会觉得这道题看起来并不难,只需要 从头开始扫描这个字符串的每一个字符,当访问到某个字符时,拿这个字符和后面的每个字符相比较,如果后面没有发现重复的字符,...

2018-02-27 18:07:44 276

原创 模拟实现一个简单的中英互译字典——二叉搜索树的应用KV模型

模拟实现一个简单的中英互译字典    请模拟实现一个简单的中英互译字典,要求能实现简单的查找,插入新词以及删除操作;例如BinaryTree.h#pragma once#include <stdio.h>#include <stdlib.h>//二叉搜索树的应用//1. 请模拟实现一个简单的中英互译的字典...

2018-02-27 17:19:42 593

原创 二叉搜索树的后序遍历序列------剑指offer面试题33

面试题33:二叉搜索树的后序遍历序列 题目:输入一个整数数组,判断该数组是不是某二叉树的后序遍历结果。如果是,返回true,否则返回false;假设输入的数组的任意两个数字都互不相同。例如,输入数组{5,7,6,9,11,10, 8},则返回true.在后序遍历得到的序列中,最后一个数字是树的根节点的值。数组中的前面的数字可以分为两个部分:第一部分是左子树结点的值,它们都比根...

2018-02-26 21:57:47 400

原创 二叉搜索树的创建、插入、删除和查找的C语言实现

二叉搜索树(BST)1.二叉搜索树的概念二叉搜索树又称二叉排序树,它或者是一棵空数,或者是具有以下性质的二叉树: 1. 若它的左子树不为空,则左子树上所有节点的值都小于根节点的值. 2. 若它的右子树不为空,则右子树上所有节点的值都大于根节点的值. 3. 它的左右子树也分别为二叉搜索树int a[] = {5,3,4,1,7,8,...

2018-02-26 21:24:50 1677

原创 堆排序&优先级队列

堆1.大根堆:根节点的值都大于或等于子树的值 小根堆: 根节点的值都小于或等于子树的值堆是完全二叉树创建一个堆: i)存储: 用顺序表存储 ii).第一步: 将数据集合存储成完全二叉树 第二步: 调整成堆#define DataType intvoid AdjustDown(DataType *a, size_t n, int root){ i...

2018-02-25 20:34:28 358

原创 C语言小游戏——五子棋

game.h#ifndef __GAME_H__#define __GAME_H__#include <stdio.h>#include <time.h>#include <stdlib.h>#define ROW 5#define COL 5void InitBoard(char arr[ROW][COL],int row,int col);void DisplayBoard(char arr[

2017-12-10 20:24:22 650

原创 关于时间复杂度和空间复杂度的计算

衡量一个算法的复杂度:时间复杂度空间复杂度算法的时间复杂度和空间复杂度合称为算法的复杂度时间复杂度一般来说,一个算法执行所消耗的时间从理论上是算不出来的,只有通过上机运行才能测试出来。当然,我们也没必要知道一个算法它具体执行的时间是多少,而我们又知道,一个算法花费的时间与算法中语句的执行次数是成正比的。哪个算法语句执行的次数多,它花费的时间就多。void Tes...

2017-12-09 23:12:57 11592 3

原创 致我的CSDN博

人真是环境的产物

2017-12-09 23:02:34 381

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除