自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(34)
  • 资源 (5)
  • 收藏
  • 关注

原创 _BLOKC_TYPE_IS_VALID(pHead->nBlockUse)

class Test{ public: Test(int val = 1){i = new int ; *i = val;} ~Test(){delete i;} int getVal(){return *i;} private: int *i; }; int main() { Test a,b(2); a = b; cout<<a.getVal()<<endl; return 0

2014-01-18 11:40:52 704

原创 MFC中显示像素值保存在二维数组中的BMP图像

BYTE *imShow = new BYTE[height*width]; for(int j=height-1,cur=0;j>=0;--j) { for(int i=0; i<width; ++i) imShow[cur++] = (BYTE)imRot[j][i]; } if (m_bmp.m_hObject!=NULL) //判断 m_bmp.DeleteO

2013-12-28 11:07:19 2815

原创 BMP图像的选择与显示

void CMFCTestDlg::OnBnClickedButton1() { // TODO: 在此添加控件通知处理程序代码 UpdateData(TRUE); CFileDialog file_open_dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,("BMP Files(*.bmp)|*.bmp|All Files(*.*)|*.*||")); file_

2013-12-28 10:59:17 926

原创 2013巨人网络C++笔试题

1、进程与线程的区别,及其优点 2、如何将自己写的程序,开机直接打开 3、为何使用Release()删除,而不是使用delete删除 4、关键字const;static;extern;volatile;auto的用法 5、struct结构拷贝 #define const int MAXLength 32 struct ttk{ int a; char first[MAXLeng

2013-10-23 09:21:23 959

原创 短文 词频

本程序从正文文件text.txt读入一篇英文短文,统计该短文中不同单词和它的出现次数,并按词典编辑顺序将单词及它的出现次数输出到正文文件word.txt中.程序用一棵有序二叉树存储这些单词及其出现的次数,一边读入一边建立.然后中序遍历该二叉树,将遍历经过的二叉树上的节点的内容输出. #include #include #include using namespace std; ifs

2013-08-21 15:13:05 437

原创 寻找第K大的数

可以用容量为K的最小堆来存储最大的K个数。最小堆的堆顶就是最大K个数中最小的一个,即第K大的数。每次新考虑一个数X,如果X比堆顶的元素Y小,则不需要改变原来的堆,如果比堆顶元素大,那么用X替换堆顶的元素Y。在X替换堆顶元素Y之后,X可能破坏最小堆的结构,需要更新堆来维持堆的性质。更新过程花费的时间复杂度为O(log2K). #include using namespace std; void

2013-08-17 12:06:09 459

转载 二叉查找树(二叉排序树)的详细实现

1、序      详细实现了二叉查找树的各种操作:插入结点、构造二叉树、删除结点、查找、  查找最大值、查找最小值、查找指定结点的前驱和后继 2、二叉查找树简介      它或者是一棵空树;或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值; (2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值; (3)左、右子树也分别为二叉排序树

2013-07-06 22:40:30 499

原创 二叉树树的基本算法

#include using namespace std; #define OK 1 #define ERROR 0 #define OVERFLOW -2 typedef char ElemType; const int MaxLength = 30;//结点个数不超过30个 typedef struct BiTreeNode{ ElemType data; struct BiTree

2013-06-24 14:20:41 469

原创 期望为线性时间的选择算法randomizedSelect

一般选择算法看起来要比找最小值这样的简单问题更难,但有期望为线性时间的选择算法,期望运行时间为O(n)。 #include #include using namespace std; template int partition(T *a,int first,int end) //实现了对子数组A[p..r]的原址重排 { int x = a[end-1]; int i = first

2013-06-09 21:14:07 883

原创 桶排序

桶排序假设输入数据服从均匀分布,平均情况下它的时间代价为O(n)。与计数排序类似,因为对输入数据做了某种假设桶排序的速度也很快。具体来说,计数排序假设输入数据都属于一个小区间内的整数,而桶排序则假设输入是由一个随机过程产生,该过程将元素均匀、独立地分布在[0,1)区间上。 #include using namespace std; template void insertSort(T *a,

2013-06-09 21:04:54 445

转载 排序算法稳定性

假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,ri=rj,且ri在rj之前,而在排序后的序列中,ri仍在rj之前,则称这种排序算法是稳定的;否则称为不稳定的。 判断方法: 对于不稳定的排序算法,只要举出一个实例,即可说明它的不稳定性;而对于稳定的排序算法,必须对算法进行分析从而得到稳定的特性。需要注意的是,排序算法是否为稳定

2013-06-08 11:09:39 692

原创 计数排序

//计数排序假设n个输入元素中的每一个都是在0到k区间内的一个整数,其中k为某个整数。 #include using namespace std; int* countingSort(int *A,int *B,int ASize) { int maxKey = -65535; for(int i=0;i<ASize;++i) { B[i] = 0; if(A[i]>maxKey)

2013-06-08 09:56:55 346

原创 快速排序

快速排序的运行时间依赖于划分是否平衡,而平衡与否又依赖于用于划分的元素。如果划分是平衡的,那么快速排序算法性能与归并排序一样。如果划分是不平衡的,那么快速排序的性能就接近于插入排序了。 #include using namespace std; //快速排序 template int partition(T *a,int first,int end) //实现了对子数组A[p..r]的

2013-06-07 15:11:24 407

原创 优先队列

堆的一个常见的应用:作为高效的优先队列。 优先队列是用来维护有一组元素构成的集合S的数据结构,其中的每一个元素都有一个相关的值,称为关键字。一个最大优先队列支持一下操作: INSERT(S,x): 将元素x插入集合中。 MAXIMUM(S):返回S中具有最大键字的元素。 EXTRACT-MAX(S):去掉并返回S中的具有最大键字的元素。 INCREASE-KEY(S,x,k):将元素x的

2013-06-07 10:09:22 423

原创 堆排序

#include using namespace std; void maxHeap(int *a,int i,int heapSize) { int l = 2*i; int r = 2*i+1; int largest=0; if(la[i-1]) //左孩子大于父节点 largest = l; else largest = i; if(ra[large

2013-06-06 16:08:04 368

原创 最大子数组问题

//分治策略 #include using namespace std; struct subarray //返回一个下标元组划定跨越中点的最大子数组的边界,并返回最大子数组中值的和 { int left; int right; int sum; }sub,subL,subR,subC; subarray FIND_MAX_CROSSING_SUBARRAY(int *a,int l

2013-06-05 15:03:39 496

原创 bubbleSort

#include using namespace std; templatevoid bubbleSort(T *a,int num) { for(int i=0;i<num-1;++i) for(int j=num-1;j>=i+1;--j) if(a[j-1]>a[j]) swap(a[j-1],a[j]); } templatevoid print(T *a,int n

2013-06-04 11:17:02 436

原创 selectionSort

#include using namespace std; templatevoid selectionSort(T *a,int num) { int min=0; //最小值下标 for(int i=0;i<num-1;++i) { min = i; for(int j=i+1;j<num;++j) if(a[j]<a[i]) min = j; swap(a[

2013-06-04 11:03:36 467

原创 mergeSort

#include using namespace std; template void merge(T *a,int left,int mid,int right) { int n1=mid-left+1; int n2=right-mid; T *L = new T[n1]; T *R = new T[n2]; for(int i=0;i<n1;++i) L[i] = a[left

2013-06-04 10:17:42 482

原创 insertSort

#include using namespace std; template void insertSort(T *a,int num) { int i,j; T key; for(j=1;j<num;++j) { key=a[j]; i=j-1; while(i>=0&&a[i]>key) { a[i+1]=a[i]; --i; } a[i+1]=ke

2013-06-03 15:42:39 434

转载 vi命令

进入vi的命令  vi filename :打开或新建文件,并将光标置于第一行首  vi +n filename :打开文件,并将光标置于第n行首  vi + filename :打开文件,并将光标置于最后一行首  vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处  vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复f

2013-05-21 11:35:10 357

原创 使用者自定义User-Defined的迭代器

以下实例说明如何编写自定义的迭代器。这事一个关联式容器的Insert迭代器,虾米那是其实作代码 #include using namespace std; //template class for insert iterator for associative containers template class asso_insert_iterator:public iterator { p

2013-05-15 14:59:12 337

原创 数组外包装为STL容器

下面介绍一个很有用的数组包装类别,性能不输一般的数组,而且更安全。这是“使用者自行定义STL容器”的一个很好的例子。该容器所使用的,就是包装法:在数组之外包装一层常用的容器界面。 Class carray定义如下: //carray.h #include template class carray{ private: T v[thesize]; //fixed-size array

2013-05-11 17:25:23 740

原创 运用maps strings 并于执行期指定排序准则

#include #include #include #include #include using namespace std; //function object to compare strings //allows you to set the comparison criterion at runtime and compare case insensitive

2013-05-11 11:16:38 466

原创 Sets 执行期制定排序准则

无论是将排序准则作为第二个template参数传入,或是采用缺省的排序准则less #include #include #include"print.h" using namespace std; //type for sorting criterion template class RuntimeCmp{ public: enum cmp_mode{normal,rever

2013-05-09 21:32:07 526

原创 STL Container

1、以标准输入装置完成初始化操作: vector vec((std::istream_iterator(cin)),(std::istream_iterator())); 注意不要遗漏了涵括“初始化参数”的那对“多余的”括号,否则这个表达式的意义会迥然不同。 以标准输出堵操作: //print elements separated with spaces copy(vec.beg

2013-05-07 20:31:36 429

转载 虚拟继承 与 sizeof

1.为什么要引入虚拟继承 虚拟继承是多重继承中特有的概念。虚拟基类是为解决多重继承而出现的。如:类D继承自类B1、B2,而类B1、B2都继承自类A,因此在类D中两次出现类A中的变量和函数。为了节省内存空间,可以将B1、B2对A的继承定义为虚拟继承,而A就成了虚拟基类。实现的代码如下: class A class B1:public virtual A; class B2:p

2013-04-25 20:39:56 445

原创 字符指针

很好的一个字符指针例题 char *str[]={"welcome","to","Fortemedia","Nanjing"}; char**p=str+1;     str[0]=(*p++)+2;     str[1]=*(p+1);     str[2]=p[1]+3; str[3]=p[0]+(str[2]-str[1]); cout cou

2013-04-25 13:29:52 414

原创 sizeof 部分用法

1、指针变量的sizeof 指针记录了另一个对象的地址。既然是来存放地址的,那么它当然等于计算机内部地址总线的宽度。所以在32位计算机中,一个指针变量的返回值必定是4(注意结果是以字节为单位)。 char* pc = "abc"; int* pi; string* ps; char** ppc = &pc; void (*pf)();//指针函数 size

2013-04-12 21:51:59 313

转载 strcpy写法 出现频率最高的笔试题

题目 已知strcpy函数的原型是: char * strcpy(char * strDest,const char * strSrc); ⒈不调用库函数,实现strcpy函数。 ⒉解释为什么要返回char *。 解说 ⒈strcpy的实现代码 char * strcpy(char * strDest,const char * strSrc) {

2013-04-09 21:57:58 377

原创 类String定义原型

定义类String的原型为: class String { public: String(const char *str = NULL);// 普通构造函数 String(const String &other); // 拷贝构造函数 ~ String(void); // 析构函数 String & operator =(const String &oth

2013-04-09 19:49:47 430

原创 算法(Algorithm)

算法(Algorithm) 处理多个区间 如果某个算法用来处理多个区间,那么当你调用它时,务必确保第二(以及其他)区间所拥有的元素个数,至少和第一区间内的元素个数相同。 要想让目标区间够大,你要不一开始就给他一个正确大小,要不就显式地改变其大小。这两个办法都只适用于序列容器(vectors,deques,lists)。关联式容器根本不会有此问题,因为关联式容器不可能被当做覆写型算法的操作目标

2013-04-08 22:35:32 479

原创 auto_ptr智能指针

1、Class auto_ptr 这个智能指针应该保证,无论在何种情形下,只要自己被摧毁,就一定连带释放其所指资源。而由于智能型指针本身就是区域变量,所以无论是正常退出,还是异常退出,只要函数退出,它就一定会被销毁。          注意:auto_ptr不允许使用一般指针惯用的赋值(assign)初始化方式。必须直接使用数值来完成初始化:         s td::auto_ptrptr

2013-04-06 14:51:22 335

原创 让自己习惯C++

尽可能使用const          Chargreeting[] = “Hello”;          Char*p = greeting;                                                //non-constpointer, non-const data          Constchar* p = greeting;

2013-03-23 21:19:15 324

求一个字符串中的连续出现次数最多的字串

得出一个字符串中的连续出现次数最多的子串

2014-01-06

C++入门经典(第三版)

C++入门经典 第三版 一本十分经典的C++入门教程

2013-06-26

ACM竞赛常用算法与数据结构

acm竞赛中常用算法与数据结构、常见题型、时空复杂度分析等

2013-06-26

空空如也

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

TA关注的人

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