- 博客(118)
- 收藏
- 关注
C++ 虚函数表解析
C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。<wbr><...
2011-10-31 18:09:00 41
static_cast、dynamic_cast reinterpret_cast和const_ cast
关于强制类型转换的问题,很多书都讨论过,写的最详细的是C++ 之父的《C++ 的设计和演化》。最好的解决方法就是不要使用C风格的强制类型转换,而是使用标准C++的类型转换符:static_cast, dynamic_cast。标准C++中有四个类型转换符:static_cast、dynamic_cast、reinterpret_cast、和const_cast。下面对它们一一进行介绍。...
2011-10-31 16:57:00 57
Making Your C++ Code Robust(让你的c++代码变得更强大)
IntroductionWhen your C++ program grows in size, it becomes difficult to keep track of its components, and it's easier to introduce bugs. So it is important to realize that some rules should be foll...
2011-10-31 11:49:00 189
Android中铃声总结【安卓源码解析一】
最近研究源码程序,改了改手机短信铃声的源码,最近总结了下铃声的代码,写个activity继承PreferenceActivity有:手机短信铃声,手机铃声,闹钟铃声,还有sdcard中的铃声,通过选择相应的铃声,然后读取到xml文件里面,通过读取preference.xml文件,intent传个参数进去intent.putExtra(RingtoneManager.EXTRA_RINGTONE_E...
2011-10-30 22:10:00 161
2011NOKIA笔试题目
今天去NOKIA机试,纯粹打酱油,没什么准备,题目貌似不难,但时间和空间效率都要求很高,现场调试成功还是要相当的水准的。以后要好好练练北大ACM上的题目了。以下题目自然输入项范围都很大,时间和空间效率要求最优。题目细节记不太清了,大致翻译而已。全部只能用C语言完成。1. 输入: char *S 字符串S是a-z的任意字符组成的乱序字符串,没有任何规律。 要求判断经过顺序调整,字...
2011-10-30 01:21:00 103
STL排序函数运用
#include<algorithm>#include<ctime>#include<vector>#include<iostream>using namespace std;const int SIZE=25;int main(){ //create four vector for sorting algorithm vector...
2011-10-29 17:56:00 61
STL排序函数
标准模板库(STL)在库头文件<algorithm>中提供了几个排序函数。STL类List就有自己的内置的sort函数。对容器来说,List的sort函数比一般的排序算法快,因为它对列表进行了优化,而且是交换指针,不是复制对象。在排序双向队列、字符串、数组、或矢量时,使用一般的sort函数,注意这个sort函数不稳定,值相同的元素不能保证处于相同的顺序位置上,为此应使用stable_s...
2011-10-29 17:54:00 50
快速排序(quick sort)
快速排序 如图显示该分区,它具有以下属性:S1=theArray[first....poivotIndex-1]分区的所有项都小于枢轴项p,而S2=theArray[pivotIndex+1 .....last]的所有项大于等于p。这个属性并未说明数组已经完成排序,但指出一个重要的事实:在正确排序数组后,虽然位置first到pivotIndex-1的元素的相对位置可能变化,但依然在first到...
2011-10-29 17:37:00 69
归并排序(merge sort)
归并排序 归并排序是一种递归排序算法,无论数组元素的原始顺序如何,其性能恒定不变。将数组一分为二,分别排序两部分元素,再将有序的两半数组归并为一个有序数组。归并步骤比较数组前一半的元素与数组的后一半元素,并将较小元素移到临时数组,该过程继续前进,直到其中一半再没有元素为止。此后只需将其余元素移到临时数组即可。最后将临时数组复制到原始数组。#include<iostream>...
2011-10-29 17:35:00 40
插入排序(insertion sort)
插入排序 这个插入排序版本将数组分成两个区域。已排序区域和未排序区域。开始时,整个数组是未排序区域,就像放在牌桌上面的一叠没有排序的扑克。在每一步,插入排序取出未排序区域的第一项,并放入排序区域的适当位置。此操作类似于在桌上去一张牌,并插入手上适当位置。第一步很简单:将数组第一项从未排序区域移到已排序区域,不必移动数据。因此这步骤可以忽略。将数组第一项视为原始排序区域,将数组其余项视为原始未排...
2011-10-29 17:33:00 69
起泡排序(bubble sort)
起泡排序 起泡排序比较相邻元素,若为逆序,则交换元素,这种排序一般需要多次遍历数据。在第一次便利中,比较数组前两项,若为逆序,则进行交换;则比较下一对元素,即数组位置2和位置3,若为逆序,则进行交换,继续此过程,每次比较和交换两个元素,直到数组结束。#include<iostream>using namespace std;void sort(int arr[],int...
2011-10-29 17:30:00 136
选择排序(selection sort)
选择排序。 为升序排列数组,必须首先找到最大元素。要使最大元素移至数组最后一位,应交换最后一个元素与最大元素,即使两个元素正好相等,也是如此。现在,忽略数组的最后一个(最大)元素,在数组其余部分查找最大元素,并交换最大元素和最后一个元素(即原始数组的倒数第二个元素)。这个过程一直进行,直到选择和交换了数组n个元素中的n-1个元素。剩余一个元素在数组的第一个位置,已在适当的位置。#inclu...
2011-10-29 17:27:00 42
大O表示法
如果算法A需要的时间与f(n)成正比,则算法A成为f(n)阶,表示为O(f(n))。函数f(n)称为算法的增率函数(growth-rate function)。该表示法使用大写字母O来表示(order),故称大O表示法。若规模为n的问题需要的时间与n成正比,则问题表示为O(n),即n阶。若需要的时间与n^2成正比,则问题表示为O(n^2),以此类推。下面是算法的阶的定义。 若存在常量k和...
2011-10-29 17:24:00 180
arm-marvell-linux-gnueabi 交叉编译c/c++程序,并移植到android
这次要把在机顶盒上运行的程序交叉编译到android平台运行, 机顶盒是mips的, 而android是arm的, 显然需要不同toolchain来编译。于是下载了android的NDK, 缺少很多的头文件, 我的程序用到了 linux 系统的消息队列做进程间通信,消息队列相关的 <sys/msg.h> 不存在, 这就麻烦了。决定下载arm 的 toolchain 来编译试...
2011-10-28 15:39:00 552
MyEclipse打jar包
教你MyEclipse打jar包1、 在MyEclipse中选择你要打包的类或者package,右击后,选择Export子选项。2、在弹出的对话框中,选择java——>选择JAR file,单击next 。3、在JAR file后面的文本框中选择你要生成的jar包的位置以及名字,单击next 。4、单击next按钮,到达JAR Manifest Specification。在...
2011-10-27 21:35:00 102
java使用代理发送邮件
最近用java写个发邮件的东东,然后打成jar包,jar包可以放在任何地方邮件正常发送要求 :1、网络正常的情况下,可以发送;2、网络不正常的时候,需要使用内网连接到外网,使用代理发送邮件。部分代码拿出来分享一下:package com.zyuc.mail;import java.io.File;import java.util.HashMap;import jav...
2011-10-27 19:03:00 773
轻松恢复误drop掉的表
平时由于不小心,会误drop掉数据库中的表,以至于手忙脚乱,呵呵,别担心,我教你快速恢复删除前的表结构,很简单的啊,学着点。操作完成,是不是很简单啊。...
2011-10-27 18:47:00 164
如何获得Java项目文件所在的相对路径
今天在开发中做一个java项目,要求读取配置文件中的信息,开始一直写成绝对路径,当项目打jar包以后就找不到配置文件了,后面在网上当了一个方法,问题最后解决了,拿出来跟大家分享一下。/** * 获得项目所在路径 * @return String */public static String getPath() {URL url = UtilTools.class.g...
2011-10-27 17:58:00 282
launcher修改--launcher架构解析
要想做好launcher,对其基本的架构了解是必须的,在这篇文章里,简单的介绍下launcher中类的构成和架构,首先,这篇文章中很多资源均从互联网中获得,感谢网友们的无私奉献,大家都共享,进步才会更快。第一步,先看两张从网上找来的launcher的架构图。第二张:通过这两张图,简单的说下:整个launcher,准确来说应该是homescreen更为合适,是一个包含三个c...
2011-10-27 16:09:00 397
launcher修改--修改launcher的屏幕数
首先,在Launcher.java代码中,第125行static final int SCREEN_COUNT = 5;static final int DEFAULT_SCREEN = 2;//第一页是从0开始计数,这里是把第三个页面作为默认首页第一个参数定义屏幕个数,第一个参数是默认的首页。在这里,你可以做出自己的修改。但是,仅这点修改,远远不够,我们看一下launcher....
2011-10-27 14:33:00 208
C++运算符重载
所谓多态性是指发出同样的消息被不同类型的对象接收时导致完全不同的行为。这里所说的消息主要是指对类的成员函数的调用,而不同的行为是指不同的实现。利用多态性,用户只需发送一般形式的消息,而将所有的实现留给接收消息的对象。对象根据所接收到的消息而做出相应的动作(即操作)。 函数重载和运算符重载是简单一类多态性。 所谓函数重载简单地说就是赋给同一个函数名多个含义。具体地讲,C++中允许在...
2011-10-26 22:38:00 85
详细介绍C++中的虚函数和动态联编
面向对象程序设计的基本观点是用程式来仿真大千世界,这使得它的各种根本特性非常人性化,如封装、继承、多态等等,而虚函数就是c++中实现多态性的主将。为了实现多态性,c++编译器也革命性地提供了动态联编(或叫晚捆绑)这一特征。 虚拟函数亦是mfc编程的关键所在,mfc编程主要有两种方法:一是响应各种消息,进行对应的消息处理。二就是重载并改写虚拟函数,来实现自己的某些要求或改变系统的某些默认...
2011-10-26 22:16:00 71
虚析构函数之实践
看了不少虚函数方面的文章,但对于虚析构函数在功能实现上还是不甚理解,于是决定实践一番,可让我收益匪浅啊首先定义一个没有虚函数的基类:#include<iostream>#include<string>using namespace std;class Sphere{ public: Sphere(double initialRadius=0); d...
2011-10-26 22:12:00 67
模型元素之间的关联(has-a use-a and have-a)
模型元素之间的连接关系有:关联Association、概化Generalization、依赖Dependency、实现Realization、聚合Aggregation、组合Combination。其中,聚合和组合是关联的一种特殊形式。(1)关联Association:用于描述模型元素之间的连接,只要两个模型元素之间存在相互通信的关系,它们之间就存在关联关系。关联关系可以是单向的,但一般为...
2011-10-26 18:06:00 199
事件驱动的模拟(event-driven-simulation)在排队中的运用
这在里模拟的是一个银行排队系统。该模拟要考虑两类事件: * 到达事件:这些事件指示新客户到达银行,输入文件指定到达事件发生的时间。这属于外部事件。当客户到达银行时,将发生两件事情之一:若客户到来时出纳员空闲,则客服入队,直接开始办理业务,若出纳员正在办理业务,则新客户必须排在队尾,等候服务。 * 离开事件:这些事件指示客户在办理业务后离开银行。该模拟确定离开事件发生的事件,这属于内部事件(...
2011-10-26 16:49:00 740
stl类queue
template<class T,class container=deque<T> >class queue{ public: explicit queue(container &cn=container()); //dafault constructor initializes an empty queue //precondition :Non...
2011-10-26 16:15:00 74
stl类stack
template<class T,class Container=deque<T>>class stack{ public: explicit stack(const Container &cnt =Container()); //default constructor ;initializes an empty stack //precondit...
2011-10-26 16:13:00 44
stl类vector
template<class T>class std::vector{ public: vector(); //Default constructor //Precondition :None; //Postcondition :An empty vector exists. vector(size_type n); //Creates a vector w...
2011-10-26 16:12:00 96
队列(queue)之基础实现
队列类似于人员排队。首先加入列队的人最先得到服务,并第一个离队,队列项在队尾(back或rear)加入,从对头(front)离队。队列的操作只发生在两端,这使得队列具有先进后出(first-in first-out简写为FIFO)的特性,相对而言,可认为栈只有一端。因为所有的操作都在栈顶执行。这使得栈具有后进先出的特性。以下是对的几个实现:1、queue的异常处理类:#ifndef ...
2011-10-26 16:06:00 115
浅谈北京市IT行业现状及就业前景——暑期实践调研
在过去的几年里北京市通过自主创新的力量,推动了软件技术的应用、企业的上市,大量的自主创新产品进入国际市场,自主创新的战略获得广泛应用,“中国软件之都”北京的软件产业发展已经受到了全世界的关注。同时,北京市计算机行业内的骨干企业实力不断增强,继续保持全国领先地位。中关村是我国创业最活跃的地区,是科技基础设施和创新平台最完备的区域,也是国内风险投资最丰富的区域,其拥有国内层次最高、密度最大、极为...
2011-10-26 15:55:00 471
sqlite3 交叉编译 undefined reference to `fdatasync' 错误解决
交叉编译sqlite到android平台, Android.mk 文件内容如下:LOCAL_PATH:= $(call my-dir)INCDIR:=/home/android-ndk-r6b/sources/cxx-stl/gnu-libstdc++/libs/armeabi/include# first lib, which will be built statically...
2011-10-26 15:14:00 489
error :does not name a type
前天在写一个中后缀转换的程序时遇到了一个很棘手的问题:在我定义了map之后,无论采取那种插入方法均已失败告终,期间也问了好多网友,改过了不少次,最终还要感谢飞飞的网友的帮助终于成功的处理了。g++ 编译出现的错误,这个错误提示给人一头雾水,感觉没有一点下手修改的方向。定义了全局变量opeMap ,紧接着在main()函数之外执行opeMap的insert操作,这是错误之源。但不...
2011-10-26 15:01:00 2087
基于栈的应用之计算后缀表达式
算法:1、当输入操作数时,计算器便将其入栈 2、当显示操作符时,计算器将其用于栈顶的两个操作数,使操作数出栈,按照操作符的指示执行计算。 3、使步骤2的操作结果入栈。 4、读取下一个字符依次重复执行1 2 3 的步骤。当达到后缀表达式末尾时终止。算法终止时,表达式的值位于栈顶。用#作为不是同一个操作单元的分隔符(操作数,操作符)本算法的前提要求: *字符串是语法正确...
2011-10-26 13:37:00 92
栈的基础应用之中缀转换后缀
算法详解: 1、在遇到操作数时,将其追加到输出字符串postfix中,在后缀表达式中,操作数的顺序与其在中缀表达式中的顺序相同,中缀表达式中操作符左边的操作数也出现在后缀表达式中的操作符的左边。 2、使各个左括号符入栈。 3、在遇到操作符时,若栈为空,则使操作符入栈。若栈非空,则使优先级更高(或相同)的操作符出栈,并追加到postfix中,在遇到左括号符,或优先级更低的操作符,或栈为空...
2011-10-26 12:50:00 97
栈的基础实现
栈有后进先出(last in ,first out ,LIFO)的特性,即放到栈中的最后一个项目将第一个被删除。定义栈的异常处理类:#ifndef STACK_EXCEPTION_H_#define STACK_EXCEPTION_H_#include<stdexcept>#include<string>using namespace std;class ...
2011-10-26 12:16:00 77
类与类之关系
为了便于说明,在这里我摘找了两个类的定义如下:Sphere类作为基类class Sphere//define a sphere class for base class { public: Sphere(); Sphere(double initialRadius); //copy constructor and destructor supplied //by th...
2011-10-26 00:48:00 64
【object-c基础】Object-c基础之五:在项目开发中Xcode的常用功能
1.菜单栏分别有文件,编辑,视图,导航,编辑器,产品,窗口和帮助栏目。我们说下我们平常用的最多的菜单栏。(1)新建文件和打开文件(2)清除内存在项目开发中,多次编译之后经常会遇到突然xcode卡死了,或者自己更改的代码在模拟器上还是没有改变时,可以选择product里面的clean,把内存清除掉。在项目基本功能实现时,最后一般都要做内存的泄漏处理,我们可以通...
2011-10-25 10:25:00 135
SIFT算法概述
SIFT算法小结1 SIFT 发展历程SIFT算法由D.G.Lowe 1999年提出,2004年完善总结。后来Y.Ke将其描述子部分用PCA代替直方图的方式,对其进行改进。2 SIFT 主要思想 SIFT算法是一种提取局部特征的算法,在尺度空间寻找极值点,提取位置,尺度,旋转不变量。3 SIFT算法的主要特点:a) SIFT特征是图像的局...
2011-10-24 23:06:00 392
Launcher修改--修改底部图标
在android2.2中,launcher的底部被修改成这种模式,有时候修改launcher的时候需要去掉电话和浏览器两项,我们可以在res/layout-port/文件夹中找到launcher.xml文件,在其中有以下代码<RelativeLayout android:id="@+id/all_apps_button_cluster" andro...
2011-10-24 22:11:00 312
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人