自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 C++代码优化方法总结

C++代码优化方法总结  优化是一个非常大的主题,本文并不是去深入探讨性能分析理论,算法的效率,况且我也没有这个能力。我只是想把一些可以简单的应用到你的C++代码中的优化技术总结在这里,这样,当你遇到几种不同的编程策略的时候,就可以对每种策略的性能进行一个大概的估计。这也是本文的目的之所在。目录:  一. 优化之前  二. 声明的放置  三. 内联函数  四.

2012-01-15 18:52:31 415

原创 字库 TTC TTF

一、何为字库        字库是外文字体、中文字体以及相关字符的电子文字字体集合库,被广泛用于计算机、网络及相关电子产品上。            下面描述几种字库。 二、True Type字库   True Type(简称TT)是由美国Apple公司和Microsoft公司联合提出的一种新型数字化字形描述技术。TT是一种彩色数字函数描述字体轮廓外形的一套内容丰富的指令集

2012-01-14 20:53:44 1478

转载 《高效编程十八式》后记

后记王伟冰     首先,我为什么要写《高效编程十八式》。其实就是想把自己编程过程中学到的、领悟到的东西整理整理,发出来大家讨论讨论。我不是计算机专业的学生,我喜欢编程,但是在我所在的学院里像我这样的人并不多。而且我这个人交际面不广,也没有认识多少其它院系的人。所以大学里的很多时候我都是一个人在学,看编程的书,做一些自己喜欢的小项目。我不知道我现在到底属于什么水平,因为没有人可以跟

2012-01-10 19:28:11 561

转载 《高效编程十八式》(11/13)调试

调试王伟冰    调试可以深入程序内部,观察运行时各个变量的值。但是,并不是一出现bug就要调试。调试最适合用来探究一些自己不太熟悉的语言特性或者是技术。比如你对C++某些语句的作用不太熟悉,对某个库函数的作用不太熟悉,调试一下,就可以看得清清楚楚了。如果程序只是逻辑出错误,最好的方法是测试,通过逐个单元的测试,找出问题的所在。为什么测试的效率更高?因为测试可以是自动化的,你可以编写测

2012-01-10 19:27:14 502

转载 《高效编程十八式》(12/13)总结

总结王伟冰简洁原则:写出来的代码要尽量简洁,避免重复。1 把经常用到的代码段写成一个函数,可以简化代码。2 把函数定义为与之密切相关的类的成员函数,可以简化函数实现的代码。3 对于内部实现不同但对外接口相同的类成员函数,可以建立共同的基类虚函数(或Java和C#中的接口),从而可以在外部代码中统一处理,简化外部代码。4 对于内部实现完全一致的类成员变量和

2012-01-10 19:26:07 469

转载 《高效编程十八式》(10/13)测试

测试王伟冰    测试就是指检验程序是否能运行得出正确的结果。“黑盒测试”是指不考虑程序内部如何实现,只检查程序能否对各种不同的输入得出正确的输出结果;“白盒测试”是指深入程序代码内部,测试每一个操作的执行是否正确。测试的方法有很多,而且有专门用来测试的软件,这里都不讲,这里只讲一些测试的原则。     1. 自动化原则:尽量把测试所要做的人工操作减到最少。    比如你想

2012-01-10 19:21:35 415

转载 《高效编程十八式》(9/13)代码编辑

代码编辑王伟冰    下面列举一些代码编辑器常用的功能,如果你正在使用的代码编辑器有此功能,请充分利用,这样可以提高写代码的效率。没有的话就算了。       添加:    自动补全:键入单词的前几个字母,自动插入整个单词。    代码模板:插入一些常用的代码结构或程序框架。     方便查看:    自动格式化:不用你自己敲Tab缩进代码,自动缩进。

2012-01-10 19:19:30 450

转载 《高效编程十八式》(8/13)多线程

多线程王伟冰    什么是多线程?多线程有什么用?先来看一个例子。    假设我们要写一个播放在线视频的程序,那么肯定会有两个步骤:下载视频,然后再播放视频。简单用代码表示就是这样:    Download();    Play();    然而我们必须等到整部视频下载完了才能播放,我们希望下载和播放能够同时进行,下多少播多少。而且,由于网络的原因,下载的速度我们是无法

2012-01-10 19:18:45 518

转载 《高效编程十八式》(7/13)性能优化

性能优化王伟冰    第1节中已经提到过快速原则1:尽量减少对数据的复制。在这一节将讨论更多的提高程序执行速度的方法。     快速原则2:尽量利用先前算出的结果。    比如说计算数列:1,1,2,3,5,8,13……的第n位,即f(0)=f(1)=1,f(n)=f(n-1)+f(n-2),最直观的代码就是这样:    int f(int n){        i

2012-01-10 19:17:49 482

转载 《高效编程十八式》(6/13)命名、陷阱与异常

命名、陷阱与异常王伟冰命名    命名其实包括两方面的内容,一个是起什么样的名字,一个是在什么地方定义。通常我们认为,一个变量、函数或类的名字应该能够清晰地表达出它的作用,但是有时候要想出一个合适的名字就很费时间,所以比较实际的做法是,一个变量、函数或类的重要性越大,它的名字就越应该清晰地表达出它的作用。(清晰原则4)衡量重要性有两个方面,一方面是本征重要性:类>函数>变量;另一方面是

2012-01-10 19:16:11 424

转载 《高效编程十八式》(5/13)宏思想与语法糖

宏思想与语法糖王伟冰    在C程序里我们会常用到宏定义,比如导言中PI的例子,也可以写成宏定义:    #define PI 3.14159265    如同导言所讨论的,宏定义也有同样的好处:简化书写、便于修改、便于理解等。然而,正如许多C/C++书籍所强调的,宏定义不安全,因为它只是执行简单的文本替换。比如#define f(x) x*x,那么f(1+2)会变成1+2*1+2

2012-01-10 19:15:22 642

转载 《高效编程十八式》(4/13)形体建模:继承与多态

形体建模:继承与多态王伟冰    我们经常会用计算机对一些现实的事物进行建模,比如说用代码来描述一些形体。我们可以用边长来描述一个立方体,这样就可以求出它的体积:    class cube{    public:        double length;        double volume(){            return length*length*

2012-01-10 19:13:45 506

转载 《高效编程十八式》(3/13)矩阵类:封装与约束

矩阵类:封装与约束王伟冰    矩阵的元素可以用一个数组来储存,我们希望建立一个矩阵类,来封装各种矩阵操作(比如加减乘、求逆、转置等等)。我们可以这么写:    class matrix{        int width,height;//矩阵的宽度和高度        double* data;//储存矩阵数据的数组    public:        ma

2012-01-10 19:12:07 773

转载 《高效编程十八式》(2/13)数据统计:泛型与委托

数据统计:泛型与委托王伟冰    我们常常会遇到这样的问题,比如说,统计一个班的学生中数学成绩大于60分的人数。假如说所有学生的成绩储存在一个int型数组中,那么我们可以定义这样的函数:    int count(int scores[],int n){        int m=0;        for(int i=0;i            if(scores[i]

2012-01-10 19:10:35 454

转载 《高效编程十八式》(1/13)复数运算:类与函数

复数运算:类与函数王伟冰有时候我们会在程序中用到复数运算,我们一般会先定义一个复数类:class complex{public:    double x,y;};假如我们需要把两个复数相加,比如说有三个complex型变量a、b、c,要把a和b相加的和赋给c。我们可以这样做:c.x=a.x+b.x;c.y=a.y+b.y;假如我们每次做复数加法都要写这么两行

2012-01-10 19:08:40 518

转载 《高效编程十八式》(0/13)导言:编程五大原则

导言:编程五大原则王伟冰本文讨论的是如何提高编程的质量和效率,涉及编程的十八个方面:类,函数,泛型,委托,封装,约束,继承,多态,宏思想,语法糖,命名,陷阱,异常,性能优化,多线程,代码编辑,测试,调试。示例代码主要是用C++写的,但是我所讨论的原则同样适用于其它语言。我根据自已实际编程的经验,以及阅读过的编程书籍,总结出编写代码的五条基本原则:简洁,安全,快速,灵活,清晰。下面用

2012-01-10 19:06:54 466

转载 《高效编程十八式》目录

本文讨论的是如何提高编程的质量和效率,涉及编程的十八个方面:类,函数,泛型,委托,封装,约束,继承,多态,宏思想,语法糖,命名,陷阱,异常,性能优化,多线程,代码编辑,测试,调试。    示例代码主要是用C++写的,但是我所讨论的原则同样适用于其它语言。    我根据自已实际编程的经验,以及阅读过的编程书籍,总结出编写代码的五条基本原则:简洁,安全,快速,灵活,清晰。本文将详细讨论这五个原

2012-01-10 19:02:41 417

转载 VS2005调试技巧集合

下面有从浅入深的6个问题,您可以尝试回答一下一个如下的语句for (int i = 0; i 在一个1000次的循环体内部设置断点,你希望当循环进行到900次后中断,怎么才能做到呢?你有一个表达式在上面循环的某一次发生了变化,你想知道是哪一次,在哪个地方,怎么才能做到?你希望你的断点在被命中100次后,每命中三次中断一次,比如第103,第106,第109怎样做?你有在调试一个服务程序,希望

2012-01-10 14:08:15 328

转载 wstring 和 wchar_t* 转换(处理const)

void Process(const unsigned char* pSrcChars, int srcSize, wchar_t* pDestChars, int* destSize)  {  }    int _tmain(int argc, _TCHAR* argv[])  {      std::wstring dest;      const std::string sr

2012-01-09 16:51:53 2514

转载 Relationship: char, wchar_t, TCHAR, _T(), wstring, string

CString 是一种很特殊的 C++ 对象,它里面包含了三个值:一个指向某个数据缓冲区的指针、一个是该缓冲中有效的字符记数(它是不可存取的,是位于 CString 地址之下的一个隐藏区域)以及一个缓冲区长度。 有效字符数的大小可以是从0到该缓冲最大长度值减1之间的任何数(因为字符串结尾有一个NULL字符)。字符记数和缓冲区长度被巧妙隐藏。(1) char*转换成CString

2012-01-09 16:50:09 687

原创 2012 目标

1、准备阶段:         为工作做好积极的准备,必须看完以下的书籍。         《C++ Primer》    《Effective C++》    《Think in C++》    《Exception C++》 2、 自我提高阶段:        C++编译器的原理和实现机制        了解操作系统中的内部机制如内存管理、进程和线程的管理机

2012-01-08 14:36:54 335

原创 #undef

#undef  #undef 是在后面取消以前定义的宏定义  该指令的形式为   #undef 标识符  其中,标识符是一个宏名称。如果标识符当前没有被定义成一个宏名称,那么就会忽略该指令。   一旦定义预处理器标识符,它将保持已定义状态且在作用域内,直到程序结束或者使用#undef 指令取消定义。  在此程序中,我们将取消在先前程序中对

2012-01-06 12:02:49 444

转载 从 C++ 到 Qt

Qt 是 C++ 的库,Qt在ansi C++ 的基础上进行了一点扩展。但国内似乎比较浮躁,学Qt的很多连基本的C++如何编译似乎都不太清楚。本文舍弃IDE或qmake、cmake等工具的束缚,尝试通过几个例子,一步一步从标准 C++ 的编译过渡到 Qt 的编译。本文涉及的都是最基本的东西,或许可以说,只要你用C++ Qt,不管是通过哪种工具(qmake、cmake、boost.build

2012-01-06 12:02:19 3137

转载 如何在命令行下编译创建VC程序

如何在命令行下编译创建VC程序大多数MS Visual C++创建的程序用VC编译器是很容易编译并创建出可执行文件的。但有时你可能需要从命令提示行运行程序。这个例子将阐述如何用命令行编译创建VC程序。                         VC默认安装成功后,并不具备能从命令行编译创建VC程序这一特征。我们必须做如下3步工作:1 打开DOS命令提示符窗口。

2012-01-06 12:00:51 688

转载 在Windows命令行中使用vs2005提供的编译、链接等工具对源程序进行处理

O、准备工作      在Windows平台使用命令行,与其他操作系统如UNIX/LINUX等,主要区别在于命令名称,选项、参数书写习惯,文件路径查找方式等,而它们工作的基本思路确没什么太大的不同。       设置环境变量      对于程序员来讲,主要是设置INCLUDE、LIB和PATH这三个环境变量。有一个比较不费力气的方法,就是直接在命令行中执行visualstu

2012-01-06 11:59:39 1526

转载 编码种类

ASCII ASCII码是7位编码,编码范围是0x00-0x7F。ASCII字符集包括英文字母、阿拉伯数字和标点符号等字符。其中0x00-0x20和0x7F共33个控制字符。只支持ASCII码的系统会忽略每个字节的最高位,只认为低7位是有效位。HZ字符编码就是早期为了在只支持7位ASCII系统中传输中文而设计的编码。早期很多邮件系统也只支持ASCII编码,为了传输中文邮件必须使

2012-01-04 00:28:08 1583

转载 QString 中文问题

首先呢,声明一下,QString 是不存在中文支持问题的,很多人遇到问题,并不是本身 QString 的问题,而是没有将自己希望的字符串正确赋给QString。很简单的问题,"我是中文"这样写的时候,它是传统的 char 类型的窄字符串,我们需要的只不过是通过某种方式告诉QString 这四个汉字采用的那种编码。而问题一般都出在很多用户对自己当前的编码没太多概念,于是一

2012-01-03 23:39:39 409

转载 qt 中文编码

我的中文为什么没法显示?在Qt使用中经常有朋友会碰到这样的问题。通过google搜索,会发现已经有人解决过了,无非就是重新设置一下默认的编码器先调用下面两个函数之一QTextCodec *textc=QTextCodec::codecForName(”gbk”);QTextCodec *textc=QTextCodec::codecForName(”utf8″);然后调用下面3

2012-01-03 23:24:56 460

空空如也

空空如也

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

TA关注的人

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