自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Xefvan的博客

做你所愿,惠及世界

  • 博客(34)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 决策树学习 -- ID3算法和C4.5算法(C++实现)

前言在学习西瓜书的时候,由于书本讲的大多是概念,所以打算用C++实现它的算法部分(至于python和matlab实现,实现简单了很多,可以自己基于C++代码实现)。至于测试数据,采用了书中关于西瓜的数据集。什么是决策树首先,决策树(也叫做分类树或回归树)是一个十分常用的分类方法,在机器学习中它属于监督学习的范畴。由于决策树是基于树结构来决策的,所以学习过数据结构的人,相对来说会比较好理解。 一般

2017-09-16 23:04:24 8255 1

原创 有关Function Try Block的法则

法则1:构造函数的function try block处理程序只能用于转化(translate)从基类或成员子对象的构造函数抛出异常(也可能做一些相应的记录工作,或其它某种附带性的工作,以响应构造失败)。此外没有什么作用。例如:class X : Y{private: T* t_; Z* z_;public: X() try : Y(/* */)

2017-07-24 18:46:32 1059

原创 人脸检测和识别及python实现系列(2)-- 相关API介绍与数据采集

前言距离该系列的上一篇已经有一段时间了,在这段时间里,我们对人脸识别又有更深入的理解。这里就把我们这几天做的一部分东西总结一下。常用opencv API介绍python调用opencv库相当的简单,这里我们拿一个简单的程序来说下。读取图片img = cv2.imread(image_name)显示图片cv2.imshow("This is a window!", img) # img为

2017-07-10 00:10:00 1455

原创 人脸检测和识别及python实现系列(1)-- 环境配置和相关类库安装

前言先说下自己写这个系列的想法,大二上的时候由于和老师做项目,期间接触了许多比较前沿的东西,可以说就此改变了我对大学的想法吧,从起初不想考研,等大四毕业后出去找个稳当的工作,到后来十分期望接受更高的教育。所以,这可以算是我大学的一个转折点吧。我正式开始学习ML是在大二下的时候,也许个人比较笨和时间花的不够多的原因,对机器学习的学习成效也不是很好。之所以想做人脸识别,是对自己的内心一点小小的欲望,也是

2017-07-07 00:31:26 1101

原创 C++知识点(持续更新)

RAII机制为了管理内存等资源,C++程序员通常采用RAII机制(资源获取即初始化,Resource Acquisition Is Initialization),在使用资源的类的构造函数中申请资源,然后使用,最终在析构函数中释放资源(–《Boost程序库完全开发指南》)

2017-07-05 14:10:32 279

原创 VS2017使用Boost库中出现的小问题

前言首先说下原先使用Boost的配置:sublime3,Boost1.64.0和g++4.9.2在之前学习Boost过程中出现了类似以下的问题// undefined reference to boost::system::system_category() when compilingundefined reference to boost::system::system_category()幸好

2017-06-28 22:23:26 2462

原创 Boosst.assert库的简单尝试

对比C++标准库中的assert,Boost.assert强化了原始的运行时assert宏,static_assert库提供了静态断言(编译期诊断),而lightweight_test和test库则构建了完整的单元测试框架。这里写的是运行时assert宏基本用法assert库定义了两个断言宏#define BOOST_ASSERT(expr) a

2017-06-28 21:38:52 537

原创 《Effective Modern C++》读书笔记(5) -- 尽量使用nullptr而不使用0和NULL

前言在之前看《C++ primer》一书,有关nullptr的解释已经很清楚了,这里有必要再整理一下。0和NULL在C++11之前包括C,都会用到一个名为NULL的预处理器来给指针赋值,这个变量在头文件中cstdlib中定义,它的值就是0。我们都知道0是整形,不是指针。// before C++11#define NULL 0// since C++11#define NULL nullptr在

2017-06-22 20:24:21 658

原创 《Effective Modern C++》读书笔记(4) -- 尽量使用auto来显式类型声明

写了三篇,发现还是有点啰嗦了,所以下面的笔记改的更为简洁些,更多的是记载自己对这本书的理解和运用。这节包括的内容有:autostd::function前言在C或者C++这类语言中,声明变量的使用通常需要类型声明。例如:int a = 10; // 声明一个整形变量a,其值为10然而有时候我们通常只声明,不定义。例如:int a; // 声明一个整形变量a但是通

2017-06-20 21:08:59 495

原创 《Effective Modern C++》读书笔记(3) -- 明白decltype(understand decltype)

前言decltype是一个神奇的创造。给它一个name或者expression,它将告诉你name或者expression的类型。正如书中写到的 decltype typically parrots back the exact type of the name or expression you give itdecltype的基本用法有以下两种: decltype(entity )

2017-06-16 11:52:54 375

原创 《Effective Modern C++》读书笔记(2) -- auto类型推导(auto type deduction)

模板类型推导涉及模板(template),函数(functinos)和参数(parmeters),但是auto并没有处理处理这些问题。auto类型推导auto作为C++11新添加的特性之一,很强大,即便有些许不足,但是也是瑕不掩瑜。对于auto而言,它的强大之处在于类型推导(type deduce),因此既然是推导,那么它就不能像普通的变量一样,只声明不定义,例如:int a;

2017-05-18 12:52:56 532

原创 《Effective Modern C++》读书笔记(1) -- 模板类型推导(template type deduction)

前段时间看了《Effective Modern C++》这本书,收获颇多,书中讲解了许多C++11/14的特性,都是之前不太了解或者模糊的,看了之后茅塞顿开,强烈建议C++学习者看一看。现在是第二遍,打算把之前看的总结一下,本文大量引用了原书的内容,如有不适,请提出。前言《Effective Modern C++》开头说到: C++98 had a single set of rules for

2017-05-14 13:10:01 644

原创 分治策略学习(二)

如果对分治策略不懂的可以先看下这个:分治策略学习(一)回顾一下分治策略的三步骤: 1. 分解步骤:将问题划分为一些子问题,子问题的形式与原问题一样,只是规模更小。 2. 解决步骤:递归求解出子问题。如果子问题的规模足够小,则停止递归,直接求解。 3. 合并步骤:将子问题的解组合成原问题的解。当子问题足够大,需要递归求解时,我们称之为递归情况。当子问题变得足够小,不再需要递归时,我们说递归已经“

2017-03-28 14:45:03 445

原创 动态规划学习(一)

简述分治方法将问题划分为互不相交的子问题,递归地求解子问题,再将它们的解组合起来,求出原问题的解。与之相反,动态规划应用于子问题重叠的情况,即不同的子问题具有公共的子子问题。对于分治方法,在处理问题的时候,会反复求解那些公共子子问题。而动态规划算法对每个子子问题只求解一次,将其保存在一个表格中,从而无需每次求解一个子子问题,避免了这种不必要的计算工作。通俗来讲:就是你去考研,需要考政治,英语,数学和

2017-03-20 23:05:18 329

原创 分治策略学习(一)

前言分治策略作为算法中的一个基础策略之一(例如还有动态规划,贪心算法,摊还分析等等),是我们进入算法世界的第一扇门,所以学的好与坏,也关系到将来。这里为了让我更好的学习分治策略,特意写了这几篇,以此提高自己对分治策略的理解。

2017-03-09 23:07:39 794

翻译 Big-Five: 析构函数,拷贝构造函数,移动构造函数,拷贝赋值操作和移动赋值操作

简介在C++11里,类有五个已经为你写好的特殊函数。它们是析构函数,拷贝构造函数,移动构造函数,拷贝赋值操作和移动赋值操作函数。这些就是Big-Five。在许多情况下,你可以接受编译器为五大操作提供的默认函数。但是,有时你不能这样做。析构函数(Destructor)当一个对象离开作用域或者遭到删除时,析构函数被调用。通常,析构函数的唯一职责就是释放在使用对象期间获取的任何资源。这包括通过调用dele

2017-02-09 15:07:36 1420

原创 利用栈实现中缀表达式转前缀表达式

前面既然写了中缀转后缀的,那么现在说下中缀转前缀的,至于后缀(前缀)转中缀,可以根据相关的转换规则自行转换。目的将中缀表达式(即标准的表达式)转换为前缀表达式例如:1+2*3+(4*5+6)7 转换成 ++1*23+*4567 转换原则:与中缀转后缀不同,前者是顺序从左到右读取每一个字符,后者是从右到左顺序读取每一个字符,然后进行反转字符串。如果遇到操作数,直接将操作数放入到prefix 中如果

2017-02-06 12:13:02 12014 1

转载 利用栈实现中缀表达式转后缀表达式

简介中缀表示法(或中缀记法)是一个通用的算术或逻辑公式表示方法, 操作符是以中缀形式处于操作数的中间(例:3 + 4)。与前缀表达式(例:+ 3 4)或后缀表达式(例:3 4 +)相比,中缀表达式不容易被电脑解析,但仍被许多程序语言使用,因为它符合人们的普遍用法。逆波兰表示法(Reverse Polish notation,RPN,或逆波兰记法),是一种是由波兰数学家扬·武卡谢维奇1920年引入的数

2017-01-23 22:11:44 1004

原创 操作系统之进程和线程(一)

进程进程是操作系统中最核心的概念,是对正在运行程序的一个抽象。在进程模型中,计算机上所有可运行的软件,通常也包括操纵系统,被组织成若干顺序进程,简称进程。而为了实现这进程模型,操作系统维护着一张表格(一个数据结构),即进程表。每个进程占用一个表项,该表项包含了进程的状态的重要信息,比如程序计数器,堆栈指针,内存分配状态,所打开文件的状态,账号和调度信息,以及其他进程运行态转换或阻塞态时必须保存的信息

2017-01-23 15:01:24 308

原创 2016年终总结

盛年不重来,一日难再晨。及时当勉励,岁月不待人。 —陶渊明 时间过得很快,再过几个小时就是2017年了,回望2016,让我感触很深。2016年是改变的一年,也是成长的一年。浑浑噩噩的半年年初,我参加了社团里的寒假比赛,说实话那时候的我对自己是一点信心都没有,回到家,为了不拖累小组的进度,只要吃完饭就待在电脑前,《Flask Web开发》那本书,看了一遍又一遍,也不知道是脑子通了?还是什

2016-12-31 23:58:45 380

原创 字符串匹配算法 -- 暴力破解法(朴素法),RK算法,KMP算法

算法 预处理时间 匹配时间 朴素算法 0 O((n-m+1)m) Rabin-Karp Θ(m) O((n-m+1)m) KMP算法 Θ(m) Θ(n)术语前缀和后缀如果对某个字符串y∈∑*有x = wy, 则称字符串w是字符串x的前缀,记做 w ⊂ x。如果对某个字符串y∈∑*有x = yw, 则称字符串w是字符串x的后缀,记做 w ⊃ x。朴素字符串匹

2016-12-21 00:38:58 2457

原创 《编程之美》-- 快速找出故障机器

问题要求总结问题要求假设一个机器存储一个标号为ID的记录(假设ID是小于10亿的整数),假设每份数据保存两个备份,这样就有两个机器存储了同样的数据。 1. 在某个时间,如果得到一个数据文件ID的列表,是否能够快速找出这个表中仅出现一次的ID? 2. 如果已经知道只有一台机器死机(也就是说只有

2016-12-12 22:21:33 424

原创 《编程之美》 -- 中国象棋将帅问题和一摞烙饼的排序

中国象棋将帅问题题目要求假设棋盘上只有“将”和“帅”二子(为了方便描述,我们约定A表示“将”,B表示“帅”)。A,B二子被限制在己方3×3的格子里运动。每一步,A,B分别可以横向或纵向移动一格,但不能沿对角线移动。另外,A不能面对B,即A和B不能处于同一纵向直线上。 请写出一个程序,输出A,B所有合法位置。要求在代码中只能使用一个字节存储变量。分析本题大体可以理解为A,B各自在一个3×3的格子里上

2016-12-10 21:21:04 470

原创 《编程之美》-- 让CPU占用率听你指挥

题目要求写一个程序,让用户决定windows任务管理器(Task Manager)的CPU占用率。程序越精简越好,计算语言不限。例如,可以实现下面三种情况 1. CPU的占用率固定在50%,为一条直线; 2. CPU的占用率为一条直线,具体占用率由命令行参数决定(参数范围1~100); 3. CPU的占用率状态是一条正弦曲线什么是CPU使用率CPU执行应用的程序的时间和刷新周期总时间的比率,就

2016-12-05 22:33:25 877 1

原创 数据结构之图(C++)--邻接矩阵表示(一)

数据结构之图(C++)–邻接矩阵表示(一)基本概念简单地说,图是一个用线或边链接爱一起的顶点或节点的集合。严格地说,图是有限集V和E的有序对,即G=(V,E),其中V的元素称为顶点(也称节点或点),E的元素称为边(也叫弧或线)。每一条边链接两个不同的顶点,而且用元组(i,j)来表示,其中i和j是边所连接的两个顶点。图的术语:顶点,边,邻接,关联,度,回路,路径,连通构件,生成树图的类型:无向图,

2016-11-18 23:06:32 1588

原创 九大排序算法

九大排序算法 - 冒泡排序 - 插入排序 - 选择排序 - 快速排序 - 归并排序 - 堆排序 - 计数排序 - 基数排序 - 桶排序注: 1. 以下遍历中用到了swap()函数,进行两个数的交换 2. 其中的伪代码参考自《算法导论第三版》冒泡排序冒泡排序是一种简单的排序算法。它重复地“走访”要排序的数列,一次比较两个元素,如果他们的顺序错误就进行交换。时间复杂度:O(n^2)

2016-10-20 23:33:14 448

原创 数据结构之跳表

字典字典有一些形如字典类字典的节点// 链表节点定义template <typename K, typename E>struct pairNode{ pair<const K, E> element; pairNode<K, E>* next; pairNode() {} pairNode(const pair<const K, E>& element) : e

2016-10-16 22:20:10 531

原创 C++ typedef和typename关键字

前序在《STL源码解析》一书中看到了这样一段代码template <class ForwardIterator, class Size, class T, class T1>inline ForwardIterator __uninitialized_fill_n(ForwardIterator first, Size n, const T& x, T1*){ typedef typena

2016-10-13 12:40:18 1165

原创 数据结构之栈(C++)

栈栈是一种特殊的线性表,其插入(又称入栈或压栈)和删除(又称出栈或弹栈)操作都在表的一端进行。表的两头称为栈顶和栈底例如:栈的删除操作中,删除D元素递归工作栈我们常常会用到递归函数,而计算机执行递归就是使用递归工作栈。 当一个函数被调用时,一个返回地址和被调函数的局部变量和形参的值都要存储在递归工作栈中。因此随着递归的不断调用,最先被执行的操作存储在栈的最底部,最后的操作存储在栈的顶部。当执行到递

2016-10-09 17:37:34 353

原创 数据结构之线性表(C++) -- 链式描述

数据结构之线性表 – 链式描述概述与数组描述不同,在链式描述中,线性表的元素在内存中的存储位置是随机的。每个元素都有一个明确的指针(链)指向线性表的下一个元素的位置(地址)链表的种类一般分为单链表,双链表和循环链表(单向或双向)。单链表单链表结构是每个节点只有一个链,例如 双链表链表中每个节点有两个链,一个指向上一个节点,一个指向下一个节点循环链表循环链表是单链表的一种变种,单链表是将尾节点置为N

2016-10-01 23:24:28 465

原创 数据结构之线性表(C++)---数组描述

数据结构之线性表—数组描述前面我写了几节二叉树,现在想想还是回过头来吧线性表写了概述C++里提供了强大的STL(标准模板库),而且很多大神和相关书籍多提倡我们使用STL,切勿盲目自己写,这样反而效率更低。但是在使用STL的同时,能够了解如何实现简单的STL是很爽的。C++程序常用的数据描述方式是数组描述和链式描述,而线性表可以用来说明这两种方法。STL容器大致相当于线性表的数组描述方式和链式描述方式

2016-09-30 22:01:23 2221

原创 数据结构之二叉树(C++)(二)

目录 (Table of Contents)二叉树的操作二叉树的完整构建续如何获取树的高度删除整颗树比较两颗树是否相等类的部分实现遍历树的高度二叉树的操作二叉树是一种特殊的树,在上一节中也介绍了树的其他形式,例如:霍夫曼树,B树等。其中,二叉树的常用操作有 1. 确定树高 2. 确定元素数目 3. 复制 4. 显示或打印二叉树 5. 确定两颗二叉树是否一样 6. 删除整颗

2016-09-23 01:49:21 482

原创 数据结构之二叉树(C++)(一)

数据结构之二叉树(一)目录 (Table of Contents)数据结构之二叉树一树的简单介绍树和二叉树的术语树的特点树的种类二叉树二叉树和树的根本区别二叉树的简单创建二叉树的遍历前序遍历中序遍历后序遍历层序遍历printvalue的实现抽象二叉树的实现二叉树节点的结构二叉树抽象类的构建树的简单介绍树和二叉树的术语节点的度:一个节点含有的子树的个数称为该节点的度

2016-09-22 14:32:41 2547

原创 C++类的初体验封装之构造函数(一)

前言在讲构造函数之前,我们先介绍什么是类,类的作用和类的定义什么是类类是一种复杂的数据结构,它是将各种不同的数据类型和数据的相关操作封装在一起的集合体。类的基本思想是数据抽象和封装。而类包含数据成员和成员函数

2016-09-09 15:23:54 880

BBS在线论坛

实现了BBS在线论坛的基本要求,具有后台管理,实现发帖回复点赞等等功能

2018-08-04

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

TA关注的人

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