自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 代码实现 由二叉树的先序遍历和中序遍历推出后序遍历

1 #include 2 3 using namespace std; 4 5 #define MAX 100 6 7 char preOrder[MAX] = {'A','B', 'D', 'E', 'G', 'C', 'F'}; 8 char inOrder[MAX] = {'D', 'B', 'E', 'G

2013-09-14 10:45:33 1021

转载 梯度下降法(一)入门

梯度下降法是一个一阶最优化算法,通常也称为最速下降法。我之前也没有关注过这类算法。最近,听斯坦福大学的机器学习课程时,碰到了用梯度下降算法求解线性回归问题,于是看了看这类算法的思想。今天只写了一些入门级的知识。我们知道,函数的曲线如下:编程实现:c++ code[cpp] view plaincopy

2013-07-18 15:59:35 718

转载 梯度下降算法

引用这篇博文;主要是因为它介绍的机器学习中概念性知识(通俗易懂),以后会经常见到。例如: 回归   特征   模型(拟合的函数)   输入数据的维数(特征的个数)  训练数据(训练集、样本)后面介绍的梯度下降算法不是很好懂。回归与梯度下降:   回归在数学上来说是给定一个点集,能够用一条曲线去拟合(描绘)之,如果这个曲线是一条直线,那就被称为

2013-07-18 15:58:33 701

原创 你熟悉构造函数的调用吗?

#include using namespace std;class Base { friend ostream& operator<<(ostream &os,Base &b);public: Base() { cout << "Base()" << endl; } ~Base() { cout << "~Base()" << endl; } Base(const B

2013-04-19 11:31:14 640

转载 公司中 C和C++程序员进阶之路

从一次考试说起。2010年10月份,综合部邀请我给新入职3个月的员工草拟考试试题,这些同事大部分在公司做的实习,算起来至少也有5、6个月的工作经验了吧。试题的内容,是针对日常需要面对的问题出的案例,比如,查找文件、修改下权限等,其中最后20分题,就是按要求在屏幕上输出一个由数字组成的菱形。说这些无非是想说明,考题比较简单。但考试的结果却是,有人得到80多分,有人得到20多分,相互间

2013-04-18 22:54:38 1771

原创 Linux进程间通信(IPC)

linux下进程间通信的几种主要手段简介:管道(Pipe)及有名管道(named pipe,又称为FIFO):管道可用于具有亲缘关系进程间的通信。有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信;信号(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身。报文

2013-04-18 21:18:54 466

原创 C内存重叠问题,memcpy,memmov,strcpy

memcpy,memmove:它们都是从src所指向的内存中复制count个字节到dst所指内存中,并返回dst的值。当源内存区域和目标内存区域无交叉时,两者的结果都是一样的。但有交叉时不一样。源内存和目标内存交叉的情况有以下两种:(左边为低地址)即:dstsrc针对第一种交叉情况情况,dstsrc,memcpy和memmove的结果是一样的。请看下面的例子讲解:int

2013-04-17 17:26:19 1172

转载 [C++]关于指针作为函数参数传递

【例1】Test函数的语句GetMemory(str, 100)并没有使str获得期望的内存,str依旧是NULL,为什么?-----------------------------------------------------------------------------------------------------------------------------------v

2013-04-17 15:02:01 700

转载 详解结构体、类等内存字节对齐

先说个题外话:早些年我学C程序设计时,写过一段解释硬盘MBR分区表的代码,对着磁盘编辑器怎么看,怎么对,可一执行,结果就错了。当时调试也不太会,又根本没听过结构体对齐这一说,所以,问题解决不了,好几天都十分纠结。后来万般无奈请教一个朋友,才获悉可能是结构体对齐的事,一查、一改,果真如此。    问题是解决了,可网上的资料多数只提到内存对齐是如何做的,却鲜有提及为什么这样做(即使提,也相当简

2013-04-11 10:57:43 508

转载 百度实习生笔试面试经历总结

前序:百度公司每年在5月份左右开始暑期实习生招聘,9,10月份进行校园招聘,4月中旬在网上进行了百度实习生网申,投的是C++岗位,经过半个多月的突击准备,刚刚结束了笔试,技术一面,技术二面和HR三面,中午刚回来,现在还在等待结果中……今天想通过这篇博客,总结一下自己在这次百度实习生笔试和面试过程中的一些心得体会,希望和大家一起交流一下。 笔试:时间2012-5-6 10:00

2013-04-11 09:17:57 1467

转载 数据库索引和B-tree的联系

一、引言数据库索引是什么样的?聚集索引与非聚集索引有什么不同?数据库索引使用最多的数据结构是什么?二、B-Tree我们常见的数据库系统,其索引使用的数据结构多是B-Tree或者B+Tree。例如,MsSql使用的是B+Tree,Oracle及Sysbase使用的是B-Tree。又不懂的可以看我的另外一篇博客http://blog.csdn.net/glx2012/article/det

2013-04-08 19:03:23 1779

转载 B树(即B-tree)、B+树、B*树

具体讲解之前,有一点,再次强调下:B-树,即为B树。因为B树的原英文名称为B-tree,而国内很多人喜欢把B-tree译作B-树,其实,这是个非常不好的直译,很容易让人产生误解。如人们可能会以为B-树是一种树,而B树又是一种一种树。而事实上是,B-tree就是指的B树。特此说明。B-树       是一种多路搜索树(并不是二叉的):       1.定义任意非叶子结点最多只有M

2013-04-08 18:28:09 716

原创 字符串常量放在内存中的静态存储区

一、在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。堆:就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回

2013-04-08 13:39:15 1478

原创 Singleton 考虑内存的释放和多线程

GOF的《设计模式》中这样描述:保证一个类仅有一个实例,并提供一个访问它的全局访问点。通常我们可以让一个全局变量使得一个对象被访问,但它不能阻止你实例化多个对象。一个最好的办法是,让类自身负责保存它的唯一实例。这个类可以保证没有其他实例可以被创建,并且它可以提供一个访问该实例的方法。也就是说,很多时候我们需要全局的对象,如一个工程中,数据库访问对象只有一个,这时,可以考虑使用单例模式。单例

2013-04-08 10:45:55 1156

原创 总结C++中的一些特殊情况

1. 当x为负的奇数时,右移位和除法运算的结果不相等。其他(正数、负偶数)情况一样。    因为负数在内存中是以补码的方式存储的2.     char *str = "microsoft";cout cout 输出的是整个字符串(比较特殊,不明白为什么)3.  strlen遇到/0的时候结束。和sizeof的区别。#include #include using

2013-04-07 17:21:57 596

转载 堆和栈的区别

一、预备知识—程序的内存分配    一个由C/C++编译的程序占用的内存分为以下几个部分    1、栈区(stack):  由编译器自动分配释放,存放函数的参数值,局部变量的值等。其    操作方式类似于数据结构中的栈。    2、堆区(heap):  一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回    收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链

2013-04-07 11:27:18 424

原创 进程和线程的区别和联系

进程(process)是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竞争计算机系统资源的基本单位。每个进程都有一个自己的地址空间,即进程空间(虚空间)。线程(thread)线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属

2013-04-07 11:12:42 616

原创 指针加减操作,当a为数组时a和&a的区别

求值:int *a[6][3]; int expr=a[5]-a[2];          输出expr=9.1.  二维数组元素的地址     为了说明问题, 我们定义以下二维数组:      int a[3][4]={{0,1,2,3}, {4,5,6,7}, {8,9,10,11}}; a为二维数组名, 此数组有3行4列, 共12个元素。但也可这样来理解, 数组a由三个元

2013-04-03 16:24:08 855

原创 字符数组和字符指针

1.字符数组是由若干个数组元素组成的,每个元素占用一个存储单元,保存一个字符。   例子: char s[50];   定义了一个字符数组,编译器将会分配50个连续的存储单元。2.字符串指针变量本身是一个变量,用来保存字符串常量(指向的内容可能是常量)的首地址。如果字符串指针变量没      初始化而使用,将产生不可预料的后果。   例子: char *ps; 定义字符串指针变量,编译

2013-03-28 21:03:55 465

原创 Eclipse CDT 中 while(cin>>s) 结束方法

使用Eclipse-cdt做开发的同学可能会遇到这样的问题,需要输入EOF作为结束标志结束输入,但是不知道怎么结束输入。在网上搜了一堆解决方法,都是说windows下使用 Ctrl+Z 做EOF信号,unix和linux下用 Ctrl+D 做EOF信号。自己在Eclipse-cdt中试一下,发现这招行不通。例如调试和运行以下代码,使用 Ctrl+D 也是无法终止输入的。int ma

2012-12-27 21:21:05 952 1

原创 解决问题E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用) E: 无法锁定管理目录

产生原因: 在用sudo apt-get install 安装软件时,由于速度太慢,想换个软件源,直接关闭了终端,但 apt-get 进程没有结束,结果终端提示:“E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用)E: 无法锁定管理目录(/var/lib/dpkg/),是否有其他进程正占用它?”解决办法如下:      终端输入

2012-12-08 22:09:48 1171

转载 C++名字隐藏对公有继承的影响

在讨论名字隐藏对公有继承的影响前,让我们先来看看什么是名字隐藏,以及它在非继承结构中的影响。C++中的名字隐藏(Name Hiding)规则简单地理解就是:当一个具有小作用域(inner scope)的对象A和一个作用域包含A(outer scope)的对象B同名时,在A的作用域中,B将不可见。也就是说B完全被A所屏蔽。double i = 3.1415;  names

2012-12-05 16:33:26 269

转载 变量的自动初始化

对于内置变量的自动初始化代码1 1 #include 2 #define CONST 100 3 int *p1; 4 int a[2]; 5 int b; 6 static int c; 7 main() 8 { 9 int d;10 static int e;11 int f[2];12 int *p2;13 pr

2012-12-04 16:38:57 430

转载 派生类转换到基类的可访问性

C++ Prime 理解知识点1.如果是 public 继承,则用户代码和后代类都可以使用派生类到基类的转换。2.如果类是使用 private 或 protected 继承派生的,则用户代码不能将派生类型对象转换为基类对象。3.如果是 private 继承,则从 private 继承类派生的类不能转换为基类。4.如果是 protected 继承,则后续派生类的成员可以转

2012-12-04 15:07:14 380

转载 派生类虚函数调用基类版本

C++ primer 这本书上有这么两句话“派生类虚函数调用基类版本时,必须显式使用作用域操作符。如果派生类函数忽略了这样做,则函数调用会在运行时确定并且将是一个自身调用,从而导致无穷递归。”这句话应该这样理解:当你实现派生类虚函数B : foo时,如果函数体内需要调用基类的虚函数版本时,需要显式使用基类的作用域操作符A::foo(),否则foo()就会在派生类作用域内调用派生类版

2012-12-04 10:27:02 2616 1

转载 c/c++中extern用来声明全局变量

C/C++中的变量分为全局变量、静态全局变量、局部变量和静态局部变量,在《C/C++中静态局部变量的特点与应用》中我们介绍过静态局部变量,今天我们的目标是全局变量。单个文件中的全局变量  简单一点说,全局变量就是在函数外面定义的变量,下面是一个最简单的实例,一共定义了两个int型的全局变量a和b,这两个全局变量定义的位置不大相同,a定义在函数fun1之前,而b定义在之后,a和b都定

2012-12-03 23:21:23 713

转载 变量和类成员的初始化问题

C++Primer语:初始化分两种:复制初始化(int a = 1;)和直接初始化(int a(1);)1,内置类型变量   在函数体外定义都被初始化成0,在函数体内定义的话不进行初始化。函数体内的局部变量分配在栈里,定义变量只是给了它一个临时的地址,而地址中原来是有数据存在的,只不过对你来说是未知的不确定的。   内置变量的两种初始化几乎没有差别;2,类类型变量

2012-12-02 14:10:13 451

转载 C++复制控制

当定义一个新类型时,通过使用复制构造函数,赋值操作符,析构函数来显示或隐式地完成对象的复制,赋值,撤销 1.复制构造函数:只有单个形参,而且该形参是对本类类型对象的引用(通常是const修饰)的构造函数,称为~ 复制构造函数可用于: 1)根据另一个同类型的对象显示或隐式初始化一个对象. 2)复制一个对象,将它作为实参传给一个函数 3)从函数返回时复制一个对象 4)初始化

2012-11-28 20:02:01 260

转载 关于拷贝构造函数和赋值运算符

什么时候调用拷贝构造函数?什么时候调用赋值运算符?    很多初学者容易搞不清楚。我来总结一下就是:    当进行一个类的实例初始化的时候,也就是构造的时候,调用的是构造函数(如是用其他实例来初始化,则调用拷贝构造函数),非初始化的时候对这个实例进行赋值调用的是赋值运算符。    示例如下: 1 #include iostream> 2 using na

2012-11-28 16:58:25 384

原创 什么时候会用到拷贝构造函数?

一、什么时候会用到拷贝构造函数?           拷贝构造函数 Person(const Person & per) 特点:具有单个形参(常用const修饰,是对本身类类型的引用,因为是要拷贝同类型(相同类)的对象)1当用类的一个对象初始化该类的另一个对象时.例如:C/C++ code?12345

2012-11-28 16:52:21 712

原创 const * 和 * const 代码讲解

#include using namespace std;int main1() { cout << "test" << endl; // 两者相等 const int c1 = 1; int const c2 = 2; cout << "c1:" << c1 << ';' << "c2:" << c2 << endl; // cp1是指向 const 对象的指针,指向地址中的

2012-11-28 15:35:41 369

空空如也

空空如也

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

TA关注的人

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