自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(65)
  • 资源 (7)
  • 收藏
  • 关注

转载 (转)C++内存管理

我们给auto_vect提供了标准的begin和end方法来找回iterator:class auto_vector{public:typedef auto_iterator iterator;iterator begin () { return _arr; }iterator end () { return _arr + _end; }};

2012-06-23 23:52:04 914

转载 静态方法和实例化方法的区别

静态方法和实例化方法的区别   这是一个经常被时时提出来的问题,很多时候我们以为理解了、懂了,但深究一下,我们却发现并不懂。方法是我们每天都在写得,很多程序员大多都使用实例化方法,而很少使用静态方法,问原因也说不出来所以然,或者简单的回答两者定义的区别,静态方法不需要new就可以使用 实例化方法需要new了以后才可以使用。。。。我们真的理解了吗?从实际项目开发说起,这里有开

2012-06-23 23:51:00 671

转载 单例模式

单例模式维基百科,自由的百科全书跳转到: 导航, 搜索 单例模式,也叫单子模式,是一种常用的软件设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象再通过这个

2012-06-18 23:10:41 531

转载 单例/单体模式(Singleton)

Snandy停下来,思考才是进步的本质。单例/单体模式(Singleton)首先,单例模式是对象的创建模式之一,此外还包括工厂模式。单例模式的三个特点:1,该类只有一个实例2,该类自行创建该实例(在该类内部创建自身的实例对象)3,向整个系统公开这个实例接口Java中大概是这个样子?123456

2012-06-18 22:58:27 478

转载 求字符串全排列

<br />求字符串全排列  输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则输出由字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab和cba。 <br />分析:这是一道很好的考查对递归理解的编程题,因此在过去一年中频繁出现在各大公司的面试、笔试题中。<br />我们以三个字符abc为例来分析一下求字符串排列的过程。首先我们固定第一个字符a,求后面两个字符bc的排列。当两个字符bc的排列求好之后,我们把第一个字符a和后面的b交换,得到bac,接着我们固定第

2010-11-20 12:49:00 1132

原创 C++重载operator的示例

#include#includeusing namespace std;class test{public: int v; /*构造函数*/ test():v(0){} test(const int &a):v(a){} test(const test &t1):v(t1.v){} /*以下重载小于号 > 输出> (istream & is, test &t1){ cin >> t1.v;

2010-09-26 14:22:00 701

原创 重载 方括号 中括号 [][] [C++]

<br />用嵌套类:<br />#include <iostream><br />#include <cassert><br />using namespace std;<br />class Array;<br />class Matrix<br />{<br />public:<br />Matrix(int r=0,int c=0);<br />class Array<br />{<br />   friend class Matrix;<br />public:<br />   int & ope

2010-09-26 14:21:00 11482

转载 cin、cin.get()、cin.getline()、getline()、gets()等函数的用法

<br />学C++的时候,这几个输入函数弄的有点迷糊;这里做个小结,为了自己复习,也希望对后来者能有所帮助,如果有差错的地方还请各位多多指教(本文所有程序均通过VC 6.0运行)转载请保留作者信息;<br />1、cin<br />1、cin.get()<br />2、cin.getline()<br />3、getline()<br />4、gets()<br />5、getchar()<br />1、cin>>           <br />用法1:最基本,也是最常用的用法,输入一个数字: <br

2010-06-28 19:56:00 508

转载 priority_queue用法详解

<br /> <br />priority_queue 调用 STL里面的 make_heap(), pop_heap(), push_heap() 算法<br />实 现,也算是堆的另外一种形式。<br />先写一个用 STL 里面堆算法实现的与真正的STL里面的 priority_queue 用法相<br />似的 priority_queue, 以加深对 priority_queue 的理解#include <iostream><br />#include <algorithm><br />#in

2010-06-25 23:53:00 672

转载 动态二维数组的分配与释放

<br />动态二维数组的分配与释放<br />                    <br />                      <br />两种方法:<br />1。先定义一个一维数组的类型,然后再用该类型定义一个一维数组(实际上已经成为二维的)<br />      相当于递归定义<br />           <br />           typedef int array[COL];       //使用typedef定义一个具有COL个元素的数组类型<br />        

2010-06-25 15:22:00 793

转载 map自定义比较函数

<br /> <br />template <class Key, class T, class Compare = less<Key>, class Alloc = alloc><br />    第一个参数Key是关键字类型<br />第二个参数T是值类型<br />第三个参数Compare是比较函数(仿函数)<br />第四个参数是内存配置对象<br /> <br />Map中的关键字,起码必须有“<”这个比较操作符。我们知道,int,float,enum,size_t等等简单关键字,都有内置的比较函

2010-06-24 23:08:00 5740

转载 (c++)关于stl里set容器的自定义排序

<br />最近结合stl看数据结构,对许多原本半生不熟的知识都有了点领悟,大家知道stl里无论是向量还是容器的sort算法都很有用也很方便.但是似乎大家一直都是用int类型来初始化这些对象,那我用自定义的一个结构来对初始化这些对象,并且想对结构里的某一个元素的大小来排序,该怎么办呢,我上网查了些资料,并根据自己的学习与琢磨,找到了比较简单的方法.那么不说废话,看代码:<br />view plaincopy to clipboardprint?<br />#include<iostream>   <br

2010-06-24 22:47:00 1467

转载 约瑟夫环问题

Description约瑟夫环问题;有N个人围成一个环,从第一个人开始报数,报到M的人退出环,并且由他的M值来代替原有的M值,要求输出离开环的顺序。Input第一行有2个数,M和N。(0第二行有N个数,表示每个人的M值。Output按照样例的格式,输出所有人退出环的顺序。 Sample Input4 65 4 2 3 4 2Sample Output4,1,2,3,6,5 Source#include"iostream"#include"cstdio"#include"cstdlib"

2010-06-12 15:26:00 843

转载 树和二叉树-层序遍历二叉树

<br /> <br />通过上机实践,帮助学生进一步掌握指针变量和动态变量的含义,掌握二叉树的结构特性,以及各种存储结构的特点及适用范围,掌握用指针类型描述、访问和处理二叉树的运算。<br />【实验内容】<br />实验题目一:层序遍历二叉树<br />【实验步骤】<br />1 已知二叉树以二叉链表作为存储结构,写一个算法按层序遍历它,通过程序在终端屏幕上打印出它的层序序列。<br />2 先建立二叉树的二叉链表存储结构,再遍历它。<br />3 利用队列完成算法。<br />编程实现以二叉链表存储的

2010-06-11 22:57:00 3080 1

转载 C++ int,char,string,CString类型转换(整理总结)

<br />C++ int,char,string,CString类型转换(整理总结)<br /><br />#include <string> //使用C++标准库的string类时<br />using namespace std; //同上<br />#include <sstream> <br />#include <iostream><br />#include <stdlib.h> //要将string类和int类型直接转换最好有这些包含,<br />//因为自己写一个转换函数比较方便,函数定义

2010-06-10 22:45:00 622

转载 Strcat,strcpy,strcmp,Strlen函数原型

这几个函数在面试的时候经常被考到,但没看过要准确又完美的写出来也不是易事,传说IBM曾经也考过写strcpy原型,说明这几个函数真的很有代表性,因此记于此处以便温习。以下皆经本人调试过。1、Strcat函数原型如下:char *strcat(char *strDest, const char *strScr) //将源字符串加const,表明其为输入参数{       char * address = strDest;             //该语句若放在assert之后,编译出错       asse

2010-06-09 22:43:00 891

原创 基础函数的实现(strcpy,strcat, strcmp, atoi, itoa)

strcpy:<br />/**********************<br />* C语言标准库函数strcpy的一种典型的工业级的最简实现<br />* 返回值:<br />* 返回目标串的地址。<br />* 对于出现异常的情况ANSI-C99标准并未定义,故由实现者决定返回值,通常为NULL。<br />* 参数:<br />* strDeatination<br />*         目标串<br />* strSource<br />* 源串<br />*******************

2010-06-09 20:17:00 669

转载 strcpy引发的疑问(二)

<br />1.库函数strcpy的工作方式<br />char * strcpy( char *strDest, const char *strSrc ) <br />{<br /> assert( (strDest != NULL) && (strSrc != NULL) );<br /> char *address = strDest; <br /> while( (*strDest++ = * strSrc++) != ‘/0’ ); <br />  return address;<br />}<b

2010-06-09 20:05:00 1006

转载 strcpy引发的疑问(一)

<br />A: <br />char *p1; //成功 <br />char p2[20]; <br />p1 = "String A"; <br />strcpy(p2,p1); <br /><br />b: <br />char *p1; //出错 <br />char *p2; <br />p1 = "String A"; <br />strcpy(p2,p1); <br /><br />是因为没给p2分配内存空间吗?不能动态自动分配吗? <br />如果是的话,怎么写面子和样也不能成功呢? <b

2010-06-09 20:04:00 558

转载 socket 实例

UDP windows下socket编程实例UDP windows下socket编程实例<br />因为要测试一个GPRS的UDP上传功能,于是在Windows下写了这个UDP测试小程序.<br />Server 端程序源代码:<br />#include <stdio.h><br />#include <Winsock2.h><br /><br />void main()<br />{<br />SOCKET socket1;<br /><br />//InitWinsock();<br /> WSADA

2010-06-08 22:57:00 563

转载 windows socket网络编程(二)

Windows Socket 网络编程(二) —— 套接字编程原理  一、客户机/服务器模式 在TCP/IP网络中两个进程间的相互作用的主机模式是客户机/服务器模式(Client/Server model)。该模式的建立基于以下两点:1、非对等作用;2、通信完全是异步的。客户机/服务器模式在操作过程中采取的是主动请示方式:首先服务器方要先启动,并根据请示提供相应服务:(过程如下)1、打开一通信通道并告知本地主机,它愿意在某一个公认地址上接收客户请求。2、等待客户请求到达该端口。3、接收到重复服务请求,处理该

2010-06-08 19:27:00 536

转载 windows socket网络编程

<br />Windows Socket编程 <br />一、基于TCP(面向连接)的socket编程<br />服务器端程序:<br />1、创建套接字(socket)。<br />2、将套接字绑定到一个本地地址和端口上(bind)。<br />3、将套接字设为监听模式,准备接受客户请求(listen)。<br />4、等待客户请求到来;当请求到来后,接受连接请求,返回一个新的对应于此次连接的套接字(accept)。<br />5、用返回的套接字和客户端进行通信(send/recv)。<br />6、返回

2010-06-08 19:24:00 714

原创 野指针

野指针<br />  “野指针”不是NULL指针,是指向“垃圾”内存的指针。人们一般不会错用NULL指针,因为用if语句很容易判断。但是“野指针”是很危险的,if语句对它不起作用。野指针的成因主要有两种:   一、指针变量没有被初始化。任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会乱指一气。所以,指针变量在创建的同时应当被初始化,要么将指针设置为NULL,要么让它指向合法的内存。   二、指针p被free或者delete之后,没有置为NULL,让人误以为p是个合法的指针。别看fre

2010-06-08 00:05:00 766 1

转载 字符串循环右移

字符串循环右移算法碰到一些问题,需要对字符串进行循环右移几位的操作,如果一位一位的整体移动,时间就耗费太多了;而如果使用辅助数组来临时存储一下,那么空间耗费就大了。想了有点时间,找到一个O(n)时间,仅需两个临时字符变量的方法。适合较长字符串,较多移动间距的循环移位操作: /* 字符串循环右移函数:tmp1存储前一个, tmp2 存储下一个。start记录起始位置设置它的原因是:如果某次循环之后正好回到了start,那么令 start++, cur再指向它,从这个新位置开始循环移动。*/<br />void

2010-06-07 23:06:00 936

转载 字符串循环左移

<br />要求时间复杂度空间复杂度都尽可能的低。<br />时间复杂度 O(n), 空间复杂度O(1),常量时间。<br />// 编程珠玑 第二章 字符串string循环移位i位<br />// eg "abcdefgh" 循环移位 3位 =》 "defghabc"<br />// 下面代码的简单思想是: <br />// 1:计算第一位将有谁来填(第四位 (currpos+i)%len ) d<br />// 2:计算第四位将有谁来填(第七位) <br />// 3:计算第七位。。。 直到所有的位置都

2010-06-07 19:42:00 1719

转载 c/c++指针精髓二(3)

<br /> 试图用指针参数申请动态内存<br /> 毛病出在函数GetMemory中。编译器总是要为函数的每个参数制作临时副本,指针参数ip的副本是 _ip,编译器使 _ip = ip。如果函数体内的程序修改了_ip的内容,就导致参数ip的内容作相应的修改。这就是指针可以用作输出参数的原因。在本例中,_ip申请了新的内存,只是把_ip所指的内存地址改变了,但是ip丝毫未变。所以函数GetMemory并不能输出任何东西。事实上,每执行一次GetMemory就会泄露一块内存,因为没有用free释放内存。

2010-06-07 00:36:00 461

转载 c/c++指针精髓二(2)

<br />1.3. 5杜绝“野指针”<br /><br />“野指针”不是NULL指针,是指向“垃圾”内存的指针。人们一般不会错用NULL指针,因为用if语句很容易判断。但是“野指针”是很危险的,if语句对它不起作用。 “野指针”的原因主要有如下几种: <br /><br />(1)指针变量没有被初始化。任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会乱指一气。所以,指针变量在创建的同时应当被初始化,要么将指针设置为NULL,要么让它指向合法的内存。例如 <br /><br />c

2010-06-07 00:32:00 487

转载 c/c++指针精髓二(1)

<br />1.3指针与内存管理<br /><br />    利用指针你可以将数据写入内存中的任意位置,但是,一旦你的程序中有一个野指针("wild”pointer),即指向一个错误位置的指针,你的数据就危险了—存放在堆中的数据可能会被破坏,用来管理堆的数据结构也可能会被破坏,甚至操作系统的数据也可能会被修改,有时,上述三种破坏情况会同时发生。所以合理的正确的分配指针的地址是非常重要的。 <br /><br /><br />1.3.1内存分配的方式 <br /><br />内存分配方式有三种: <br /

2010-06-07 00:22:00 929

转载 文件索引结构

索引文件        为了提高文件的检索效率,可以采用索引方法组织文件。采用索引这种结构,逻辑上连续的文件可以存放在若干不连续的物理块中,但对于每个文件,在存储介质中除存储文件本身外,还要求系统另外建立一张索引表,索引表记录了文件信息所在的逻辑块号和与之对应的物理块号。索引表也以文件的形式存储在存储介质中,索引表的物理地址则由文件说明信息项给出。索引结构如图5.21所示。    

2010-05-25 16:18:00 24113

转载 递归与尾递归

下面两个程序是scheme写的计算阶乘的递归和尾递归实现线性递归:(define (factorial n)    (if (=n 1)        1        (* n (factorial (- n 1)))))尾递归:(define (factorial n)    (fact-iter 1 1 n))(define (fact-iter product counter max-

2010-05-24 23:52:00 1014

原创 稀疏矩阵

一、稀疏矩阵的定义  对于那些零元素数目远远多于非零元素数目,并且非零元素的分布没有规律的矩阵称为稀疏矩阵(sparse)。  人们无法给出稀疏矩阵的确切定义,一般都只是凭个人的直觉来理解这个概念,即矩阵中非零元素的个数远远小于矩阵元素的总数,并且非零元素没有分布规律。    二、稀疏矩阵的压缩存储  由于稀疏矩阵中非零元素较少,零元素较多,因此可以采用只存储非零元素的方法来进行压缩存

2010-05-24 23:33:00 23395 2

转载 题目:输入一个链表的头结点,从尾到头反过来输出每个结点的值

题目:输入一个链表的头结点,从尾到头反过来输出每个结点的值。链表结点定义如下:struct ListNode{      int       m_nKey;      ListNode* m_pNext;};分析:这是一道很有意思的面试题。该题以及它的变体经常出现在各大公司的面试、笔试题中。看到这道题后,第一反应是从头到尾输出比较简单。于是很自然地想到把链表中链接结点的指针反转过来,改变链表的方向

2010-05-24 22:54:00 1170

原创 c++总结

C++问与答2008-07-23 23:331、在VC的MFC程序中能否使用cout输出?答:不能。必须使用CDC来进行输出。2、C++中子类的构造函数是否会自动调用基类构造函数?答:会。如果在子类的构造函数中不显式指定调用基类构造函数,则将自动调用基类缺省构造函数,所以基类一定要有缺省构造函数。如果子类的构造函数除了调用基类构造函数以外什么都不做,不能不写,必须写一个空函数。3、

2010-05-24 22:52:00 655

转载 C++基础知识,你知道多少?

 1. 传指针时,我们可以通过指针来修改它在外部所指向的内容。但如果要修改外部指针所指向的对象是不可能的。例如传递外部指针到函数内来分配空间,必须传递指针的指针或指针的引用。  2. char carry[10] = {0}; 编译器会将其后所有的东西都置0;  3. 函数返回值为const时,返回的东西付给一个类型相同的标示后其不能为左值;  4. const int *i; int

2010-05-24 00:24:00 383

转载 strcpy()、memcpy()、memmove()、memset()的实现

一直想知道内部实现, 现在想看了, 就找了一下.不错.strcpy()、memcpy()、memmove()、memset()的实现 strcpy(), 字符串拷贝.char *strcpy(char *strDest, const char *strSrc){    assert((strDest!=NULL) && (strSrc !=NULL));    char *address = st

2010-05-24 00:17:00 432

转载 转:C/C++:memmove、memcpy、strcpy三者的区别

strcpy只能处理字符串;如果拷贝带有特殊字符的串,就只能用memcpy或memmove。memcpy和memmove功能基本上差不多,但是当源串和目标串有Overlap时,memmove可以正确处理,memcpy则不行。memcpy()和memmove()都是C语言中的库函数,在头文件string.h中,其原型分别如下:   void * memcpy ( void * dst, cons

2010-05-24 00:14:00 560

原创 几个典型的内存拷贝及字符串函数实现

写一个函数,完成内存之间的拷贝。[考虑问题是否全面,是否考虑内存重叠问题]返回void *支持链式操作,参数类型是void *以支持任意类型的指针,输入参数加上const修饰,最好加上assert对输入输出指针进行非NULL判断void* memcpy( void *dest, const void *src, size_t count ){    char* pdest = st

2010-05-24 00:05:00 566

原创 C语言的移位操作符

位移位运算符是将数据看成二进制数,对其进行向左或向右移动若干位的运算。位移位运算符分为左移和右移两种,均为双目运算符。第一运算对象是移位对象,第二个运算对象是所移的二进制位数。  位移位运算符的运算对象、运算规则与结果、结合性如表2-16所示。  移位时,移出的位数全部丢弃,移出的空位补入的数与左移还是右移花接木有关。如果是左移,则规定补入的数全部是0;如果是右移,还与被移位的数据是否带符号有关。

2010-05-23 21:46:00 3335

转载 位图排序

问题:给定输入文件,文件中每条记录是一个整型数(不重复),每条记录最大为n,n限制:主存不超过1MB(实际程序超过了1M)。按照《编程珠玑》上介绍,有以下几种方法:1,多通道分片读取文件,然后合并排序分片文件2,位图排序:适合于对大量不重复数据,并且数据其他相关数据。位图排序就是使用一张表来记录关键字的存在状态(存在或不存在),然后通过采集到的状态(在/不在)通过一次遍历来

2010-05-23 21:45:00 615

转载 指针、字符串及字符串操作函数

开始之前必须明确strlen的含义,原型为size_t strlen( char *str ); strlen返回字符串的长度,即null(/0)之前的字符的数量。一 char* 与 char []实例加注释:Code void TestCharPointerAndArray() {     char *c1 = "abc"; //abc/0常量区,c1在栈上, 常量区程序结束后自动释

2010-05-23 19:57:00 1878

腾讯 笔试题面试题 汇总.

腾讯笔试题面试题汇总.我的腾讯之路,希望对大家有所帮助啦

2009-12-04

thinking in Java 第三版(中文版)

这是thinking in Java 第三版(中文版),希望对csdn的网友们有多帮助,大家一起共享资料

2009-12-02

空空如也

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

TA关注的人

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