学习笔记之C++
todototry
这个作者很懒,什么都没留下…
展开
-
UpcaseString
#include #include #include using namespace std;string UpcaseString(string &);int main(){ cout cout cout string srcString, dstString; cin >> srcString; while (1)原创 2006-11-14 11:57:00 · 987 阅读 · 0 评论 -
加密
#include #include #include using namespace std;#define TRUE 1void TranslateBuffer(char * buffer, unsigned count, string encryptCode){ __asm{ mov esi, buffer mov ecx, count mov原创 2006-11-14 11:58:00 · 791 阅读 · 0 评论 -
简单set互异
#include #include #include using namespace std;void PrintSet(set & s);void PrintVector(vector > & v);void MakeSet(set & setofdst, vector > & v);bool SelectFromSet(set & setofdst, set & setofsrc);/*voi原创 2006-11-15 11:51:00 · 804 阅读 · 0 评论 -
串指出位置的插入
/*********************************************insert a character into a existed string********************************************/#include #include #include char * insert(char * pDstString, char * pS原创 2006-11-14 12:31:00 · 818 阅读 · 0 评论 -
简单多继承
#include using namespace std;class Data{public: Data(int y = 0, int m = 0, int d = 0); void setYear(int y); void setMonth(int m); void setDay(int d); int GetYear(); int GetMonth();原创 2006-11-14 13:50:00 · 735 阅读 · 0 评论 -
排列组合
尽管排列组合是生活中经常遇到的问题,可在程序设计时,不深入思考或者经验不足都让人无从下手。由于排列组合问题总是先取组合再排列,并且单纯的排 列问题相对简单,所以本文仅对组合问题的实现进行详细讨论。以在n个数中选取m(01. 首先从n个数中选取编号最大的数,然后在剩下的n-1个数里面选取m-1个数,直到从n-(m-1)个数中选取1个数为止。2. 从n个数中选取编号次小的一个数,继续执行1步,直到当前转载 2006-11-15 13:15:00 · 863 阅读 · 0 评论 -
1的个数
#include using namespace std;unsigned int tongji(int m);unsigned int numOfone(unsigned int n);void main(){ unsigned int i(0); cout cin >> i; cout }unsigned int tongji(int m){ if (m == 1) { return 1;原创 2006-11-20 13:20:00 · 690 阅读 · 0 评论 -
排列组合算法
排列组合算法 1。最近一直在考虑从m个数里面取n个数的算法。最容易理解的就是递归,但是其效率,实在不能使用。一直找寻中,今日得果2。算法来源与互联网组合算法 本程序的思路是开一个数组,其下标表示1到m个数,数组元素的值为1表示其下标 代表的数被选中,为0则没选中。 首先初始化,将数组前n个元素置1,表示第一个组合为前n个数。 然后从左到右扫描转载 2006-11-22 10:08:00 · 60487 阅读 · 11 评论 -
sprintf将数字转换成字符串
#include #include void print(int a){ char tmp[8]={0}; int i; sprintf(tmp, "%d", a); for(i=0; i printf("%c ", tmp[i]); printf("/n");}int main(){ int a=1990; print(a); system("PAUSE"); return 0;}转载 2006-11-21 14:08:00 · 2578 阅读 · 0 评论 -
《C++ Primer》学习笔记_第一章
1.程序两个方面组成:算法的集合,数据的集合2.程序设计方法:(1)过程化;一个问题由一系列的算法来建立模型,数据存储起来,用过程访问修改。(2)基于对象;通过数据抽象建立对象模型,把数据以私有形式存放在类中,与每个类相关的算法称为该类的共有接口。(3)面向对象;通过继承(代码重用)和动态绑定(对共有接口的重用)机制,扩展了了抽象数据类型。3.迭代即循环4.防止重复包含原创 2006-11-28 08:08:00 · 1232 阅读 · 0 评论 -
大数类
//大数类 #include #include #include #include using namespace std; #define MAXN 9999 #define DLEN 4 class BigNum{ private: int a[300];//DLEN digs for a position int len; public: BigNum(){len转载 2006-12-03 10:25:00 · 2145 阅读 · 0 评论 -
带console进度条的文件拷贝程序,C++
#include #include #include #define ERRCODE DWORD#define BUFFERSIZE 36*1024#define COPY_VERSION "1.0"#define err_OK 0#define err_PARAMETER 1#define err_OPENFILE 2#defin原创 2006-12-05 17:59:00 · 2079 阅读 · 0 评论 -
指针⑶,new和delete
课堂内容:指针⑶,new和delete重点:1.内存空间的动态分配:一般来说,内存分为5个区,从上到下依次为:栈区,空闲区,堆区,代码区,系统区。或者说可以分为:┏───┯───┑ │ 代 │ 栈区││ 码 │ 堆区│ 敲的累.....│ 区 │ 全局│┕───┻───┛ ↑ ↑代码区 数据区代码区存放程序的执行代码.栈区存放局部数据区,我们把变转载 2006-12-08 09:22:00 · 1325 阅读 · 0 评论 -
C++内存大会战
C++内存大会战2006年10月23日 星期一 22:46经典收藏 C++内存管理操作详解 Bill Gates 曾经失言: 640K ought to be enough for everybody — Bill Gates 1981 C++程序员们经常编写内存管理程序,往往提心吊胆。如果不想触雷,唯一的解决办法就是发现所有潜伏的地雷并且排除它们,躲是躲不了转载 2006-12-08 09:25:00 · 1018 阅读 · 1 评论 -
print类型函数详解
print类型函数详解转载 2006-12-08 15:00:00 · 2795 阅读 · 0 评论 -
指针、引用、数组和字符串,你真的全弄清楚了吗?
注:1.未特别指明时,本文所述内容均为C/C++(引用则为C++)的;2.未特别指明时,本文的描述、测试和实现,一般基于80x86构架和Win32平台下的VC++6.0的debug模式,但我也会在某些地方强调指出;3.未特别指明时,我用实体(entity)来泛指平时所说的变量、常量和函数(未特别指明时,本文所说的常量,一般均指用const定义的,而非#define定义的);转载 2006-12-19 17:03:00 · 1467 阅读 · 0 评论 -
单词翻转
#include #include #include #include using namespace std;void separate_word(const string &str, vector &svec){ if (str.empty()) { return; } svec.clear(); string::size_type pos = 0; string::size_t原创 2006-12-18 22:20:00 · 674 阅读 · 0 评论 -
如何将二维数组作为函数的参数传递
今天写程序的时候要用到二维数组作参数传给一个函数,我发现将二维数组作参数进行传递还不是想象得那么简单里,但是最后我也解决了遇到的问题,所以这篇文章主要介绍如何处理二维数组当作参数传递的情况,希望大家不至于再在这上面浪费时间。正文: 首先,我引用了谭浩强先生编著的《C程序设计》上面的一节原文,它简要介绍了如何将二维数组作为参数传递,原文如下(略有改变,请原谅):转载 2006-12-19 18:06:00 · 1060 阅读 · 0 评论 -
马鞍点
#include using namespace std;void find(int array[][3], int row/*, int col*/);int main(){ int iarray[3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9}; find(iarray, 3/*, 3*/); return 0;}void find(int array[原创 2006-12-19 16:11:00 · 1467 阅读 · 0 评论 -
placement new的执行
int *buf = new int[1024]; int *p = new (buf)int(100); int *ptmp = new (buf + 1)int(1000); cout cout delete[] buf;原创 2006-12-22 10:49:00 · 567 阅读 · 0 评论 -
~~~二进制文件操作~~~
有这样一个二进制文件,大小在100M左右,里面存放了多张JPG图片,文件格式如下:无关数据区JPG图片数据区无关数据区JPG图片数据区无关数据区JPG图片数据区......已知JPG图片起始标志为:“FF D8 FF E0 00 10 4A”,结束标志为:“FF D9”。现想把这些JPG图片数据从该文件中读出来,生成一个个单独的图片文件,该如何做呢?帮你写了个程序, 测试了只含有一转载 2006-12-21 12:54:00 · 801 阅读 · 0 评论 -
二分查找递归,迭代写法
#include using namespace std;bool bs(int *arr, int low, int high, int sval){ int mid = (high + low) / 2; if (arr[mid] == sval) { return true; } else if (arr[mid] { low原创 2006-12-25 14:36:00 · 895 阅读 · 0 评论 -
const int *const& p = &ci;的理解
const int i =0;const int *const& p = &i; 这样原创 2006-12-28 12:08:00 · 4007 阅读 · 0 评论 -
简单函数对象取代默认排序准则,改变默认sort()的行为
templateclass Greater{public: bool operator()(const T& t1, const T& t2){return t1 > t2;}};int main(){ int sz[] = {1,3,8,10,66,31}; vector ivec(sz, sz + 6), ivec1(sz, sz + 6); sort(ivec.beg原创 2006-12-30 09:54:00 · 858 阅读 · 0 评论 -
猜单词
#include #include #include #include using namespace std;class wordobj{public:wordobj(){};~wordobj(){};bool getWord();void selectWord();const string& getSelWord();bool isRight(char ch, int index);priva原创 2006-12-26 09:54:00 · 753 阅读 · 0 评论 -
operator<<的重载,一个例子
使用C++的版本class Person{public: Person(string name, string sex, string age): _name(name), _sex(sex), _age(age){} string getName()const {return _name;} string getSex()const {return _sex;} string getAge()c原创 2006-12-31 11:04:00 · 969 阅读 · 0 评论 -
简单类模板实例化_默认构造函数
class AAA{public:// AAA(int){}; AAA(){};private: int _size;};//如果T类型是个类类型,而且没有默认构造函数,那么模版在实例化的时候会报错,因为数据成员_size无法//初始化建立templateclass BBB{public: BBB(){};private: T _size;};int main(){原创 2007-01-05 16:05:00 · 1388 阅读 · 0 评论 -
对于const量写法的位置
1。对于指针的讨论比较多 const int* p = &ci1; p = &ci2; 这是指向一个const对象的指针,而p是个指针变量,可以指向ci1,也可以变指向的到ci2 把const写在*之后那就是个常量指针了,p是指针常量,定义时初始化,以后再不能改变指向了 int *原创 2006-12-31 10:06:00 · 1288 阅读 · 0 评论 -
类型成员也有权限
class A{public://private: 若为private则A::NT i;A::B ab;均是不能正常的编译的,因为存取私有的成员了 typedef int NT; class B { };};int main(){ A::NT i = 10; cout A::B ab; return 0;}原创 2007-01-05 16:00:00 · 708 阅读 · 0 评论 -
递归翻转字串
string rev(string& s){ string s1 = string(s.begin(), s.begin() + 1);//占用内存,递归深度过大的时候 string s2 = string(s.begin() + 1, s.end()); if (s2.size() == 1) { s = s2 + s1; return s;原创 2006-12-31 13:47:00 · 650 阅读 · 0 评论 -
指向类成员指针的例程
class A{public: A(){a = 3;} void ok(){cout static void okokok(){} int a; static int b;};int A::b = 8;int A:: *p = 0;int *ps = 0;void (A:: *pf)() = 0;void (*pff)() = 0;int main(){ A原创 2007-01-05 10:51:00 · 718 阅读 · 0 评论 -
定位new和显式析构
小弟我看的是第3版P579 :char *arena = new char[sizeof Image];Image *ptr = new (arena) Image("Quasimodo");Image *ptr = new (arena) Image("Esmerelda");我 的问题是在覆盖Quasimodo的图像前书中说要调用ptr->~Image();而不是delete ptr;因为那样原创 2007-02-07 15:08:00 · 944 阅读 · 0 评论 -
匿名union是个类对象实例
匿名union是个类对象实例而不仅仅是个类型的定义(虽然它没有类型名,也没有紧跟的类对象的定义,所以并不能定义实例对象) class A{public: class { public: int a; };};class B{public: union { int b; };};int main(){ A tmpa;//原创 2007-01-05 12:43:00 · 1219 阅读 · 1 评论 -
静态数据成员的初始值的指定
静态数据成员不属于类对象,而是全部类对象所共有,你可以的这么的理解:静态数据成员独立于类的一个对象,它的定义(分配存储区域)不是定义类对象时进行的,而是独立进行的,而类定义本身不分配存储区,只是引入一个类型名字(类类型),所以必需在类定义的外面定义它,这是才分配内存给静态数据成员class A{public: static int i;};int main(){ cout re原创 2007-01-05 16:45:00 · 1220 阅读 · 0 评论 -
静态成员声明,定义
class A{public: static const int ci;};//const int A::ci = 10;int main(){ cout return 0;} 编译并无问题,运行会报错。,因为ci未定义,未分配内存,对象ci未建立成实体。【注】对于不使用的对象(包括函数),可以只声明而不定义,当需使用的时候则需有定义,分配内存,成为实体class A { pu原创 2007-01-08 09:54:00 · 1362 阅读 · 0 评论 -
new与默认构造函数
class A{public: A(int i, int = 0){}private: int a, b;};class B{public: //无需构造函数,因为数据成员的全部为public int a, b, c;};int main(){ A a = 3; B b = {1, 2, 3};// A *pa = new A[10]; B *pb原创 2007-01-08 15:36:00 · 7864 阅读 · 2 评论 -
拷贝构造函数,也可以使用成员初始化列表语法
class A{public: A(){a = 3;} A(const A& ra):a(ra.a){} void display(){cout private: int a;};int main(){ A a; A b(a); a.display(); b.display(); return 0;}拷贝构造函数属于构造函数,当然可以使用原创 2007-01-09 14:29:00 · 2100 阅读 · 0 评论 -
二维数组参数的传递,多维同理
void show1(char * sz[], int n){ cout cout }void show2(char (*sz)[20], int n) //能接受二维字符数组,首维数从实参无法取得, //因为凡数组类型,编译器解释其类型均为指向首个元素的指针,原创 2007-01-10 13:06:00 · 900 阅读 · 0 评论 -
文本字符串常量的类型是常量字符数组(元素类型+各维维数)
论坛一个帖子编译报错,“T”is ambiguous.#includeusing namespace std;template int compare(const T &v1, const T &v2){ if(v1 if(v2 return 0;}int main(){ compare("hi", "world");//这里报错 return 0;}"hi" 类型是const原创 2007-01-10 21:59:00 · 1115 阅读 · 0 评论 -
两个方向的类型转换函数
class A{public: A(){} A(int i){a = i; cout /* A& operator+ (const A& rhs) { cout a += rhs.a; return *this; }*/private: int a;};int main(){ A a(3); A b = 3; b = a + 3; return 0;} A a(3)原创 2007-01-10 22:39:00 · 734 阅读 · 0 评论