- 博客(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
963
转载 静态方法和实例化方法的区别
静态方法和实例化方法的区别 这是一个经常被时时提出来的问题,很多时候我们以为理解了、懂了,但深究一下,我们却发现并不懂。方法是我们每天都在写得,很多程序员大多都使用实例化方法,而很少使用静态方法,问原因也说不出来所以然,或者简单的回答两者定义的区别,静态方法不需要new就可以使用 实例化方法需要new了以后才可以使用。。。。我们真的理解了吗?从实际项目开发说起,这里有开
2012-06-23 23:51:00
737
转载 单例模式
单例模式维基百科,自由的百科全书跳转到: 导航, 搜索 单例模式,也叫单子模式,是一种常用的软件设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象再通过这个
2012-06-18 23:10:41
576
转载 单例/单体模式(Singleton)
Snandy停下来,思考才是进步的本质。单例/单体模式(Singleton)首先,单例模式是对象的创建模式之一,此外还包括工厂模式。单例模式的三个特点:1,该类只有一个实例2,该类自行创建该实例(在该类内部创建自身的实例对象)3,向整个系统公开这个实例接口Java中大概是这个样子?123456
2012-06-18 22:58:27
514
转载 求字符串全排列
<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
1180
原创 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
732
原创 重载 方括号 中括号 [][] [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
11719
转载 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
538
转载 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
706
转载 动态二维数组的分配与释放
<br />动态二维数组的分配与释放<br /> <br /> <br />两种方法:<br />1。先定义一个一维数组的类型,然后再用该类型定义一个一维数组(实际上已经成为二维的)<br /> 相当于递归定义<br /> <br /> typedef int array[COL]; //使用typedef定义一个具有COL个元素的数组类型<br />
2010-06-25 15:22:00
828
转载 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
5827
转载 (c++)关于stl里set容器的自定义排序
<br />最近结合stl看数据结构,对许多原本半生不熟的知识都有了点领悟,大家知道stl里无论是向量还是容器的sort算法都很有用也很方便.但是似乎大家一直都是用int类型来初始化这些对象,那我用自定义的一个结构来对初始化这些对象,并且想对结构里的某一个元素的大小来排序,该怎么办呢,我上网查了些资料,并根据自己的学习与琢磨,找到了比较简单的方法.那么不说废话,看代码:<br />view plaincopy to clipboardprint?<br />#include<iostream> <br
2010-06-24 22:47:00
1510
转载 约瑟夫环问题
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
883
转载 树和二叉树-层序遍历二叉树
<br /> <br />通过上机实践,帮助学生进一步掌握指针变量和动态变量的含义,掌握二叉树的结构特性,以及各种存储结构的特点及适用范围,掌握用指针类型描述、访问和处理二叉树的运算。<br />【实验内容】<br />实验题目一:层序遍历二叉树<br />【实验步骤】<br />1 已知二叉树以二叉链表作为存储结构,写一个算法按层序遍历它,通过程序在终端屏幕上打印出它的层序序列。<br />2 先建立二叉树的二叉链表存储结构,再遍历它。<br />3 利用队列完成算法。<br />编程实现以二叉链表存储的
2010-06-11 22:57:00
3158
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
656
转载 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
929
原创 基础函数的实现(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
701
转载 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
1039
转载 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
593
转载 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
621
转载 windows socket网络编程(二)
Windows Socket 网络编程(二) —— 套接字编程原理 一、客户机/服务器模式 在TCP/IP网络中两个进程间的相互作用的主机模式是客户机/服务器模式(Client/Server model)。该模式的建立基于以下两点:1、非对等作用;2、通信完全是异步的。客户机/服务器模式在操作过程中采取的是主动请示方式:首先服务器方要先启动,并根据请示提供相应服务:(过程如下)1、打开一通信通道并告知本地主机,它愿意在某一个公认地址上接收客户请求。2、等待客户请求到达该端口。3、接收到重复服务请求,处理该
2010-06-08 19:27:00
576
转载 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
739
原创 野指针
野指针<br /> “野指针”不是NULL指针,是指向“垃圾”内存的指针。人们一般不会错用NULL指针,因为用if语句很容易判断。但是“野指针”是很危险的,if语句对它不起作用。野指针的成因主要有两种: 一、指针变量没有被初始化。任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会乱指一气。所以,指针变量在创建的同时应当被初始化,要么将指针设置为NULL,要么让它指向合法的内存。 二、指针p被free或者delete之后,没有置为NULL,让人误以为p是个合法的指针。别看fre
2010-06-08 00:05:00
798
转载 字符串循环右移
字符串循环右移算法碰到一些问题,需要对字符串进行循环右移几位的操作,如果一位一位的整体移动,时间就耗费太多了;而如果使用辅助数组来临时存储一下,那么空间耗费就大了。想了有点时间,找到一个O(n)时间,仅需两个临时字符变量的方法。适合较长字符串,较多移动间距的循环移位操作: /* 字符串循环右移函数:tmp1存储前一个, tmp2 存储下一个。start记录起始位置设置它的原因是:如果某次循环之后正好回到了start,那么令 start++, cur再指向它,从这个新位置开始循环移动。*/<br />void
2010-06-07 23:06:00
993
转载 字符串循环左移
<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
1754
转载 c/c++指针精髓二(3)
<br /> 试图用指针参数申请动态内存<br /> 毛病出在函数GetMemory中。编译器总是要为函数的每个参数制作临时副本,指针参数ip的副本是 _ip,编译器使 _ip = ip。如果函数体内的程序修改了_ip的内容,就导致参数ip的内容作相应的修改。这就是指针可以用作输出参数的原因。在本例中,_ip申请了新的内存,只是把_ip所指的内存地址改变了,但是ip丝毫未变。所以函数GetMemory并不能输出任何东西。事实上,每执行一次GetMemory就会泄露一块内存,因为没有用free释放内存。
2010-06-07 00:36:00
487
转载 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
511
转载 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
968
转载 文件索引结构
索引文件 为了提高文件的检索效率,可以采用索引方法组织文件。采用索引这种结构,逻辑上连续的文件可以存放在若干不连续的物理块中,但对于每个文件,在存储介质中除存储文件本身外,还要求系统另外建立一张索引表,索引表记录了文件信息所在的逻辑块号和与之对应的物理块号。索引表也以文件的形式存储在存储介质中,索引表的物理地址则由文件说明信息项给出。索引结构如图5.21所示。
2010-05-25 16:18:00
24419
转载 递归与尾递归
下面两个程序是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
1048
原创 稀疏矩阵
一、稀疏矩阵的定义 对于那些零元素数目远远多于非零元素数目,并且非零元素的分布没有规律的矩阵称为稀疏矩阵(sparse)。 人们无法给出稀疏矩阵的确切定义,一般都只是凭个人的直觉来理解这个概念,即矩阵中非零元素的个数远远小于矩阵元素的总数,并且非零元素没有分布规律。 二、稀疏矩阵的压缩存储 由于稀疏矩阵中非零元素较少,零元素较多,因此可以采用只存储非零元素的方法来进行压缩存
2010-05-24 23:33:00
23502
1
转载 题目:输入一个链表的头结点,从尾到头反过来输出每个结点的值
题目:输入一个链表的头结点,从尾到头反过来输出每个结点的值。链表结点定义如下:struct ListNode{ int m_nKey; ListNode* m_pNext;};分析:这是一道很有意思的面试题。该题以及它的变体经常出现在各大公司的面试、笔试题中。看到这道题后,第一反应是从头到尾输出比较简单。于是很自然地想到把链表中链接结点的指针反转过来,改变链表的方向
2010-05-24 22:54:00
1195
原创 c++总结
C++问与答2008-07-23 23:331、在VC的MFC程序中能否使用cout输出?答:不能。必须使用CDC来进行输出。2、C++中子类的构造函数是否会自动调用基类构造函数?答:会。如果在子类的构造函数中不显式指定调用基类构造函数,则将自动调用基类缺省构造函数,所以基类一定要有缺省构造函数。如果子类的构造函数除了调用基类构造函数以外什么都不做,不能不写,必须写一个空函数。3、
2010-05-24 22:52:00
688
转载 C++基础知识,你知道多少?
1. 传指针时,我们可以通过指针来修改它在外部所指向的内容。但如果要修改外部指针所指向的对象是不可能的。例如传递外部指针到函数内来分配空间,必须传递指针的指针或指针的引用。 2. char carry[10] = {0}; 编译器会将其后所有的东西都置0; 3. 函数返回值为const时,返回的东西付给一个类型相同的标示后其不能为左值; 4. const int *i; int
2010-05-24 00:24:00
407
转载 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
458
转载 转: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
606
原创 几个典型的内存拷贝及字符串函数实现
写一个函数,完成内存之间的拷贝。[考虑问题是否全面,是否考虑内存重叠问题]返回void *支持链式操作,参数类型是void *以支持任意类型的指针,输入参数加上const修饰,最好加上assert对输入输出指针进行非NULL判断void* memcpy( void *dest, const void *src, size_t count ){ char* pdest = st
2010-05-24 00:05:00
590
原创 C语言的移位操作符
位移位运算符是将数据看成二进制数,对其进行向左或向右移动若干位的运算。位移位运算符分为左移和右移两种,均为双目运算符。第一运算对象是移位对象,第二个运算对象是所移的二进制位数。 位移位运算符的运算对象、运算规则与结果、结合性如表2-16所示。 移位时,移出的位数全部丢弃,移出的空位补入的数与左移还是右移花接木有关。如果是左移,则规定补入的数全部是0;如果是右移,还与被移位的数据是否带符号有关。
2010-05-23 21:46:00
3392
转载 位图排序
问题:给定输入文件,文件中每条记录是一个整型数(不重复),每条记录最大为n,n限制:主存不超过1MB(实际程序超过了1M)。按照《编程珠玑》上介绍,有以下几种方法:1,多通道分片读取文件,然后合并排序分片文件2,位图排序:适合于对大量不重复数据,并且数据其他相关数据。位图排序就是使用一张表来记录关键字的存在状态(存在或不存在),然后通过采集到的状态(在/不在)通过一次遍历来
2010-05-23 21:45:00
643
转载 指针、字符串及字符串操作函数
开始之前必须明确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
1947
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人