- 博客(23)
- 资源 (8)
- 收藏
- 关注
原创 VS2010打开VS2013的项目
VS低版本打开高版本创建的项目时会提示"选择的文件是解决方案文件,但是用此应用程序的较新版本创建的,无法打开"低版本不能向上兼容。解决办法:1 修改sln文件: 用文本编辑器打开sln文件, Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 2013
2014-09-22 13:29:38 1294
原创 敏捷软件开发——开放—封闭原则(OCP)
由来:怎么样的设计才能面对需求的改变却可以保持相对稳定,从而使得系统可以在第一版本以后不断推出新的版本呢?bertrand meyer 在1988年提出的著名的开发—封闭原则(the open-closed princle)为我们提供了指引。遵循开放—封闭原则设计出的模块具有两个主要特征:1. “对于扩张是开放的”(open for extension) 这以为着模
2014-09-21 22:13:51 1001
原创 敏捷软件开发——单一职责原则(SRP)
定义:简单来说,单一职责原则(SRP)就是对对一个类而言,应该仅有一个引起它变化的原因。什么是职责? 在SRP中,职责 = a reason for change 。如果你能想到多于一个的动机去改变一个类,那么这个类就具有多于一个职责。 具体的例子可以看敏捷软件开发 p91 。 SRP是所有原则找那个最简单的之一,也是最难
2014-09-20 14:55:00 991 1
原创 c++——继承类中的子对象和基类对象的初始化
为什么研究临时对象?主要是为了提高程序的性能以及效率,因为临时对象的构造与析构对系统开销也是不小的,所以我们应该去了解它们,知道它们如何造成,从而尽可能去避免它们。临时对象是可以被编译器感知的。下面的例子,可能有人认为"int temp"是"临时对象",但是其实不然,"int temp"仅仅是swap函数的局部变量。 #include void swap( int &a,
2014-09-16 14:25:01 4207 1
原创 class和struct有什么区别?
这里有两种情况下的区别。(1)C的struct与C++的class的区别。(2)C++中的struct和class的区别。在第一种情况下,struct与class有着非常明显的区别。C是一种过程化的语言,struct只是作为一种复杂数据类型定义,struct中只能定义成员变量,不能定义成员函数。例如下面的C代码片断: struct Point {
2014-09-14 21:55:35 740
原创 C++ 中explicit关键字
explicit用来防止由单参数构造函数定义的隐式转换。或者有2个参数的构造函数,但有一个参数设置了默认值。先扫盲下什么是隐式转换:可以用单个实参来调用的构造函数定义了从形参类型到该类类型的一个隐式转换。eg:class things{ public: things(string &name = ""): m_nam
2014-09-14 10:55:45 931
原创 模版的特化和偏特化
模版的特化与偏特化 Partial Template Specialization能够让你在模板(Template)的所有可能的实体中特化出一组子集. 1.模板的特化(template specialization): 例如,定义如下的一个模板: template class Widget { ... 泛化实现
2014-09-13 18:44:28 672
原创 函数对象
定义:函数对象,顾名思义,行为类似函数的对象叫做函数对象,它定义了 调用操作符的类优点:首先,因为对象可以在内部修改而不用改动外部接口,因此设计更灵活,更富有弹性。函数对象也具备有存储先前调用结果的数据成员。在使用普通函数时需要将先前调用的结果存储在全程或者本地静态变量中,但是全程或者本地静态变量有某些我们不愿意看到的缺陷。其次,在函数对象中编译器能实现内联调用,从而更进一步增
2014-09-13 16:18:05 821
原创 敏捷软件开发——一个例子:copy程序
应用程序中有3个模块,或者子程序。copy模块调用另外两个模块。copy从read keyboard中获取字符,并把字符传递给write printer模块。。。。。需求在变化: 希望copy可以从纸带读入机中读入信息:如果变量值为false,就像以前一样从键盘读取信息。槽糕的是,现在已有许多其他程序正在使用copy程序,你不能改变copy程序的接口。改变接口会导致长时间的重新编译和
2014-09-10 20:23:12 1372
原创 敏捷软件开发——项目版本迭代
开发人缘和客户决定迭代规模,一般需要两周。同样地,刻骨选择他们想要在首次迭代中实现的素材(功能)。他们不能选择与当前开发速度不符的更多的素材。 迭代期间用户素材的实现顺序属于技术决策范畴,开发人员采用最具有技术意义的顺序来实现这些素材、可以串行的实现,完成了一个再完成下一个,或者分摊这些素材,然后一起并行地开发。 一旦迭代开始,客户就不能再开遍该迭代期间需要实现的素材。除了
2014-09-04 22:45:04 3833
原创 敏捷软件开发——重构篇
代码往往会腐化。 随着一个又一个新特性的添加,处理一个有一个的错误,代码的结构逐渐退化。如果对此置之不理的话, 这种退化最终会导致纠结不清,难于维护的混乱代码。 xp(极限编程 eXtreme Programming)团队通过经常性的代码重构来扭转这种退化。重构就是在不改变代码行为的前提下,进行一系列小的修改,旨在改进系统结构。每个改造都是微不足道的,几乎不值得去做,但是所有
2014-09-04 22:14:32 1767
原创 gas_station——leetcode
class Solution {public: int canCompleteCircuit(vector &gas, vector &cost) { int len = gas.size(); int tank_all = 0; int pos = 0; int tank_cur =0; for (int i = 0; i < len; i++){ int tank
2014-09-04 15:35:53 626
原创 *candy——leetcode
/* There are N children standing in a line. Each child is assigned a rating value.You are giving candies to these c
2014-09-04 10:15:11 654
原创 敏捷软件开发之原则篇
1、我们最优化先要做的是通过尽早的、持续的交付有减脂的软件来使客户满意。2、即使到了开发的后期,也欢迎改变需求。敏捷过程利用变化来为客户创造竞争优势。3、经常性地交付可以工作的软件,交付的间隔可以从几周到几个月,交付的时间间隔越短越好。4、在整个项目开发期间,业务人员和开发人员必须天天都在一起工作。5、围绕被激励起来的个人构建项目。给他们踢空所需的环境和支持,并且信任他们能够完成工
2014-09-04 10:07:52 1003 1
原创 single number i
Given an array of integers, every element appears twice except for one. Find that single one.class Solution {//using xor bit manipulationpublic: int singleNumber(int A[], int n) {
2014-09-02 17:32:28 510
原创 Single Number II
Given an array of integers, every element appears three times except for one. Find that single one.#include#include#includeusing namespace std;#define STOP system("pause")#if 0class Soluti
2014-09-02 17:27:01 655
原创 Copy List with Random Pointer -- LeetCode
#includeusing namespace std;#define STOP system("pause")struct RandomListNode { int label; RandomListNode *next, *random; RandomListNode(int x) : label(x), next(NULL), random(NULL) {}};class
2014-09-02 13:51:51 406
原创 C++11—引入nullprt
1. 引入nullptr的原因引入nullptr的原因,这个要从NULL说起。对于C和C++程序员来说,一定不会对NULL感到陌生。但是C和C++中的NULL却不等价。NULL表示指针不指向任何对象,但是问题在于,NULL不是关键字,而只是一个宏定义(macro)。1.1 NULL在C中的定义在C中,习惯将NULL定义为void*指针值0:[cpp] view plai
2014-09-02 10:39:18 677
原创 ★ Linked List Cycle II -- LeetCode
证明单链表有环路:本文所用的算法 可以 形象的比喻就是在操场当中跑步,速度快的会把速度慢的扣圈 可以证明,p2追赶上p1的时候,p1一定还没有走完一遍环路,p2也不会跨越p1多圈才追上 我们可以从p2和p1的位置差距来证明,p2一定会赶上p1但是不会跳过p1的 因为p2每次走2步,而p1走一步,所以他们之间的差距是一步一步的缩小,4,3,2,1,0 到0的时候就重合
2014-09-01 09:50:04 643
Pattern_Recognition_and_Machine_Learning_(Solution_Manual)_-_Bishop
2014-09-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人