自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 资源 (2)
  • 收藏
  • 关注

原创 成员指针

.* //对象的成员指针->* //指针的成员指针两者都是定义在class之外,提供一种间接访问类中成员的方式,下面将直接使用代码说明class Mem {public: mutable int a; Mem(int i) :a(i) {} void fun() { cout << "fun called" << endl; }};...

2019-05-05 18:52:00 739

原创 STL hashtable简述

1.线性探测负载系数:元素个数/表格大小当hash函数计算出某个元素的位置时,若产生冲突,循环往下一一寻找(到了尾部,就绕回首部)元素删除一般采用惰性删除,这是因为hashtable中的每一个元素不仅表述自己,也关系到其他元素的排列存在一次聚集问题(primary clustering)2. 二次探测(平方探测)目的是用来解决一次聚集问题解决冲突的方程F(i)=i^2。整体过程...

2019-04-24 18:09:35 279

原创 红黑树解析(RB-Tree)

1.RB树需满足的规则节点非红即黑根节点为黑如果节点为红,其儿子必须为黑任一节点到NULL的任何路径,所含的黑节点必须相同一般将NULL看为黑节点2.RB树的插入2.1 自底向上的插入插入的新节点为红色,自底向上的插入算法较为复杂,分为四种情况状况1:P为红,S为黑,【一字型】,单旋,P变为黑色,X和S变为红色状况2:P为红,S为黑,【之字形】,双旋转...

2019-04-24 15:12:25 534

原创 堆的实现(优先级队列的基础)

1.概览由于堆是一棵完全二叉树,所以可以使用vector存储数据(0位置不放数据) 任意节点i,其左儿子为2i,其右儿子为2i+1,其父亲为i/2(下取整)堆算法主要包含三个:插入(上滤操作)、删除(下滤操作)、建堆(循环下滤操作)2.上滤即插入的过程主要思想:当要插入元素x时,在最后的位置建立一个空穴,判断该空穴是否能放下x,若不能,则上滤空穴(即将父亲的值填入空穴,而将父亲作为...

2019-04-23 17:09:05 264

原创 STL deque实现解析

1.总体概览双向开口的连续线性空间头尾均可以常数时间插入和删除空间是动态地以分段连续空间组合而成,随时可以增加一段新的空间并链接起来,不用像vector那样重新分配新空间再拷贝deque提供Random Access Iterator 但是其迭代器不是普通指针,复杂度较之于vector会高出很多,所以一般使用vector而不是deque2.deque的中控器(map)采用一块所谓...

2019-04-22 19:24:02 613

原创 STL list实现

1.数据结构节点结构:prev 指针、next指针、data三部分迭代器类型:Bidirectional Iterator数据结构:环状双向链表,只需要一个指针,下面分别是空表和有数据的链表示意图根据上图,故可以很快的得到begin()和end()等迭代器了 iterator begin() {return (link_type)((*node).next);} ...

2019-04-22 12:58:21 455

原创 vector

1.数据结构与迭代器迭代器 Random Access Iterator数据结构 连续空间含有三个迭代器:start、finish、end_of_storage构造函数允许指定vector大小和初值,主要是先调用空间配置器分配n个对象空间然后使用uninitialized_fill_n来填充初值最后更新三个迭代器。2.push_back若有空间,则调用construc...

2019-04-20 17:36:04 110

原创 STL空间配置器

1.SGI标准中的两个空间配置器std:allocator 不推荐使用,其实现主要是对::operator new 和operator delete做简单包装而已std::alloc 将内存分配和对象内容构造分开2.construct与destoryconstructdestory 只接受一个指针的版本destory 接受一对迭代器版本首先获取value_type萃取其...

2019-04-18 11:05:08 160

原创 traits思想

1.前提目的:设计迭代器分开实现list和list_iterator在使用时会暴露过多细节,所以STL容器都是都要实现自己的专属迭代器,以作更好的封装2.迭代器的相应类型value typedifference typepointer typereference typeiterator category3.存在的问题1.C++中只有sizeof而没有typeof,如何...

2019-04-17 14:45:57 133

原创 C++ 五种迭代器类别

1.Input Iterator用于读取序列中的元素,支持以下操作比较两个迭代器的相等和不相等运算符(==和!=)用于推进迭代器的后置和前置递增运算(++)用于读取元素的接应用运算符(*),解引用只会出现在赋值运算符右侧(即不可修改,只可读)箭头运算符(->)只能单边扫描2.Output Iterator只写不读的,支持以下操作++解引用(*),只会出现在赋值运算符...

2019-04-02 15:41:01 1139

原创 new、operator new 、placement new

代码来自 www.cplusplus.com直接上代码#include <iostream> // std::cout#include <new> // ::operator newstruct MyClass { int data[100]; MyClass() {std::cout << "constructe...

2019-04-01 10:51:06 120

原创 最长回文子串

1.中心扩散int expendCenter(string& s,int begin,int end){ int left=begin; int right=end; while(left>=0&&right<s.size()&&s[left]==s[right]){ le...

2019-03-22 22:11:20 171

原创 AVL树的实现

1.简述AVL树本质是二叉查找树,与二叉查找树不同的是AVL树带有平衡条件平衡条件: 每个节点的左子树和右子树的高度最多相差1,空树的高度为-1插入分以下四种情况:1 对a的左子树的左子树进行一次插入2 对a的左子树的右子树进行一次插入3 对a的右子树的左子树进行一次插入4 对a的右子树的右子树进行一次插入(1/4情况为单旋;2/3情况为双旋转)2.声明#ifndef...

2019-03-19 15:58:22 215

原创 二叉查找树实现

0.实现简述查找最小(大)元素:循环或者递归,一直往左(右)深入插入节点:如果树空,则直接创建一个节点(Base case);若非空,判断大小,看属于哪棵子树,递归调用删除节点:如果要删除的元素element<当前节点的值,递归调用在左子树中删除;否则递归调用在右子树中删除。若找到和element值相等的节点,分下面两种情况:若有两个孩子,则将右子树的最小值Min放到当前要删除...

2019-03-19 14:45:23 243

原创 栈的应用——后缀表达式

1.思想目标:将中缀表达式转换为后缀表达式思想:读到一个操作数时,放到输出中读到一个操作符时(包括左括号),从占中弹出元素并加入到输出中,直到发现更低的优先级的元素,再将操作符入栈。有一个例外,在未出现右括号时,绝不弹出左括号读到右括号时,弹出栈元素,直至遇到左括号,弹出的元素中,除左括号都加入输出中读到序列末尾,将占中所有元素弹出,加入到输出中2.实现string con...

2019-03-15 12:41:42 720

原创 最大子序列和问题的多种解法

1.O(n)的解法/*返回最大和*/int maxSum_1(const int A[], int n){ int thisSum, maxSum; thisSum = maxSum = 0; for (int j = 0; j &amp;amp;amp;lt; n; ++j) { thisSum += A[j]; if (thisSum &amp;amp;amp;gt; maxSum) { maxSum =...

2019-03-14 21:50:40 153

原创 二叉树遍历(非递归)

0.定义二叉树class Node{public: int value; Node* left = NULL; Node* right = NULL; Node(int v):value(v){}};typedef Node* Tree;typedef Node* pNode;void initTree(Tree &amp;tree){ tree = new Nod...

2019-03-14 21:17:59 125

原创 第9章 顺序容器

9.1 概述容器种类vectordeque 双端队列list 双向链表forward_list 单项链表array 固定大小数组特性vector、string顺序存储,插入删除较为耗时,但可以随机访问deque支持随机访问,在中间位置插入/删除代价很高,但在两端很快array 比内置数组更加安全选择容器的基本原则一般先考虑vector程序...

2019-01-24 15:19:27 108

原创 第8章 IO类

8.1 标准库定义的IO类型iostream 定义了用于读写流的基本类型fstream 定义了读写命名文件的类型sstream 定义了读写内存string对象的类型对于宽字符,类型和函数的名字都以 w 开头,wcin/wcout/wifstream/wofstreamIO对象拷贝和赋值ofstream out1,out2;out1=out2; ...

2019-01-24 10:54:39 102

原创 第7章 类

7.1 定义抽象类型this指针调用成员函数时,实际上在替某个对象调用它,成员函数通过一个名为this的额外的隐式参数来访问调用它的那个对象//实际执行过程Sales_data::isbn(&amp;total);//在total对象调用函数时,将对象的地址传入,初始化this指针//任何对类成员的直接访问都可以被看做this的隐式引用return book; //等价于 ret...

2019-01-14 20:37:56 130

原创 第6章 函数

6.1 函数基础调用运算符( ),作用于一个表达式(函数,或者函数指针),实参初始化形参的顺序不确定自动对象当函数控制路径经过变量定义语句时,创建该对象当到达定义所在块的末尾时,销毁该对象局部静态变量第一次经过定义语句时创建直到程序终止销毁分离式编译//程序分为多个文件,分别独立编译//假设有 main.cpp / func.cpp / func.h ...

2019-01-14 20:34:49 116

原创 第5章 语句

try语句块与异常处理throw表达式表示遇到了无法处理的异常,抛出异常try以try开始,多个catch结束,try语句块中抛出的异常会被catch子句处理try{ //do something throw runtime_err(&quot;an error&quot;);}catch(exception-declaration){ //deal the exception...

2019-01-14 20:29:48 103

原创 第4章 表达式

第4章 表达式4.1 基础左值右值当一个对象被用作左值时,用的是对象的身份;当用作右值时,用的是对象的值求值顺序int i=f1()*f2(); //无法知道f1()和f2()的计算顺序int j=0;cout&amp;lt;&amp;lt;j&amp;lt;&amp;lt;&quot; &quot;&amp;lt;&amp;lt;++j&amp;lt;&amp;lt;endl;//可能先计算++j

2019-01-14 20:27:55 123

原创 VS2015配置FFTW

下载对应版本的FFTW(32 bits / 64 bits)下载位置解压例如:D:\framework\fftw生成对应的lib文件找到vs对应的命令行工具,区分32位和64位执行如下命令lib /def:libfftw3f-3.deflib /def:libfftw3-3.deflib /def:libfftw3l-3.def在vs的项目中打开项目属性...

2019-01-09 18:55:52 913

原创 连通域标记

seed-filling思想种子填充方法来源于计算机图形学,常用于对某个图形进行填充。思路:选取一个前景像素点作为种子,然后根据连通区域的两个基本条件(像素值相同、位置相邻)将与种子相邻的前景像素合并到同一个像素集合中,最后得到的该像素集合则为一个连通区域。(1)扫描图像,直到当前像素点B(x,y) == 1:a、将B(x,y)作为种子(像素位置),并赋予其一个label,然后将该种子相...

2019-01-09 18:54:34 1864

原创 第3章 标准库类型string、vector、数组

1.string的几种初始化方式string s1;string s2(s1);string s3("A");string s4(n,'c') //n个c组成的串直接初始化与拷贝初始化拷贝初始化使用=,而直接初始化不使用2. cbegin 和cend返回只读的迭代器const_iterator3.数组一些注意事项不允许使用auto元素必须为对象,不存在...

2019-01-09 18:53:37 99

原创 第2章 基本类型

1.算术类型宽字符和unicodewchar_t 宽字符 16位char16_t unicode 16位char32_t unicode 32位字符型char/signed char/unsigned charchar 和signed char并不相同,但三者只表现为有无符号两种情况赋值超出范围问题当给无符号整数类型赋值时,若超出表示范围...

2019-01-09 18:52:49 96

原创 opencv 求连通区域的重心

主要步骤用findContours获取连通域轮廓通过Moments对象获取轮廓所在重心findContours函数的讲解实现代码#include&lt;iostream&gt;#include&lt;opencv2\opencv.hpp&gt;using namespace std;using namespace cv;int main(){ Mat src = imr...

2019-01-09 18:52:01 2363

原创 双栈实现队列

主要思想有两个栈stack1和stack2,在push时,直接压入stack1在pop时,判断stack2是否为空,空则将stack1的数据压入stack2,不空则只需将stack2的栈顶弹出。代码实现#ifndef _MYQUEUE_H_#define _MYQUEUE_H_#include&lt;iostream&gt;#include&lt;stack&gt;usin...

2019-01-09 18:51:04 253

原创 C++调用matlab代码

主要通过 mex将matlab代码编译成C/C++动态链接库(dll)编写matlab函数设置编译器mex -setup编译matlab代码mcc -C -W cpplib:multiTen -T link:lib multiTen.m配置动态链接库注意,ctf文件也要拷入到项目中,否则会出现初始化失败,程序崩溃现象代码调用%matlabfunction [...

2019-01-09 18:50:04 258

原创 小波变换笔记

实现haar小波参考文章中讲解了haar小波的原理,比较易懂,实现了多级haar小波分解,本文参照它进行了练习,同时添加了小波重建。# include&lt;iostream&gt;# include&lt;opencv2/opencv.hpp&gt;using namespace std;using namespace cv;int main(){ Mat src = imr...

2019-01-09 18:47:12 179

原创 OpenCV裁剪图像任意区域

给出区域轮廓点集,通过drawContours函数填充区域,生成mask图像,与原图相与简要代码如下#include&amp;amp;lt;iostream&amp;amp;gt;#include&amp;amp;lt;opencv2\opencv.hpp&amp;amp;gt;using namespace std;using namespace cv;int main(){ Mat src = imread(&amp;quot;F:/test

2019-01-09 18:45:59 3651 6

计算机网络系统方法 第五版 课后答案(英文版)

计算机网络系统方法 第五版 课后答案(英文版) LarryL.Peterson

2019-01-12

吴恩达机器学习讲义(合集)

吴恩达机器学习课程配套讲义,配套视频可在网易公开课上找到。

2019-01-09

空空如也

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

TA关注的人

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