C++
123.56.119.133:8090
http://123.56.119.133:8090/
展开
-
在无头单链表的一个非头节点前插入一个节点
思路:先遍历找到要插入的结点,然后创造结点,插入#define _CRT_SECURE_NO_WARNINGS 1//在无头单链表的一个非头节点前插入一个节点#includeusing namespace std;#include#includeusing namespace std;typedef int DataType;typedef struct SListNod原创 2016-04-29 09:38:18 · 378 阅读 · 0 评论 -
C++写时拷贝,引用计数
引用计数://写时拷贝 引用计数#includeusing namespace std;class String{public: String(char* str = "") :_str(new char[strlen(str) + 1]) , _pRefCount(new int(1))//初始为1 { strcpy(_str, str); }原创 2016-07-04 16:02:34 · 245 阅读 · 0 评论 -
HTTP协议详解(真的很经典)
HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTTP)的建议已经提出。HTTP协议的主要特点可概括如下:1.支持客户/服务器模转载 2016-07-31 20:43:44 · 317 阅读 · 0 评论 -
分析CreateThread与_beginthreadex的区别
本文将带领你与多线程作第一次亲密接触,并深入分析CreateThread与_beginthreadex的本质区别,相信阅读本文后你能轻松的使用多线程并能流畅准确的回答CreateThread与_beginthreadex到底有什么区别,在实际的编程中到底应该使用CreateThread还是_beginthreadex? 使用多线程其实是非常容易的,下面这个程序的主线程会创建了转载 2016-08-17 12:54:04 · 269 阅读 · 0 评论 -
全面总结sizeof的用法
一、前言编译环境是vs2010(32位)。[cpp] view plain copy"font-size:18px;">#include #include #include using namespace std; typedef struct { int a;转载 2016-08-17 13:43:06 · 328 阅读 · 0 评论 -
简洁版string类
#include #include using namespace std; class String { public: String(const char* str) :_str(new char[strlen(str) + 1]) // \0 { strcpy(_str, str); }原创 2016-08-27 16:40:53 · 410 阅读 · 0 评论 -
ZIP压缩算法详细分析及解压实例解释
最近自己实现了一个ZIP压缩数据的解压程序,觉得有必要把ZIP压缩格式进行一下详细总结,数据压缩是一门通信原理和计算机科学都会涉及到的学科,在通信原理中,一般称为信源编码,在计算机科学里,一般称为数据压缩,两者本质上没啥区别,在数学家看来,都是映射。一方面在进行通信的时候,有必要将待传输的数据进行压缩,以减少带宽需求;另一方面,计算机存储数据的时候,为了减少磁盘容量需求,也会将文件进行压缩,尽管现转载 2016-08-27 23:33:50 · 1465 阅读 · 0 评论 -
智能指针
RAII(Resource Acquisition Is Initialization):资源分配即初始化,定义封装一个类,用来实现调用构造函数时就可完成资源的分配和初始化,在调用析构函数就可完成资源的清理,以实现对资源的初始化和清理。智能指针:用自动化或者说智能的指针来实现对动态内存的释放。它是一个类,有类似指针的功能。转载 2016-08-30 11:01:34 · 325 阅读 · 0 评论 -
C++实现链表
#pragma once#includetypedef int DataType;class SListNode{ friend class SList; //友元:Slist能访问SListNodepublic: SListNode( DataType x ) :_data( x)原创 2016-08-31 10:53:43 · 243 阅读 · 0 评论 -
C++实现顺序表
#pragma once#includetypedef int DataType;class SeqList{public: //传统写法调用的构造函数 SeqList() :_array( NULL) ,_size(0) ,_ca原创 2016-08-31 10:54:16 · 351 阅读 · 0 评论 -
两个队列实现一个栈
templateclass Stack{public: bool Empty() { return _q1.empty() && _q2.empty(); } void Push(const T& x) { _q1.push(x); } void Pop() { assert((!原创 2016-08-26 09:40:24 · 200 阅读 · 0 评论 -
单例模式简要学习
单例模式是一种常用的软件设计模式,它的核心只包含一个被称为单例模式的特殊类,通过单模式可以保证系统中的一个类中只有一个实例。单例模式也叫作单件模式,Singleton还是一种非常有用 设计模式,几乎所有稍微大一些的程序都会使用它,所以构建一个线程安全并且高效的Singleton神重要1.单例类保证全局只有一个唯一实例对象2.单例类提供获取这个唯一实例的接口。原创 2016-08-14 15:33:57 · 187 阅读 · 0 评论 -
C++内存泄漏常见
程序中通常包含着静态内存和栈内存。静态内存用来保存局部static对象、类static数据成员以及定义在任何函数之外的变量(全局变量)。栈内存用来保存定义在函数内的非static对象。分配在静态或栈内存中的对象由编译器自动创建和销毁。对于栈对象,仅在定义的程序块运行时才存在,程序退出,栈对象也随即销毁;static对象和全局对象则是在程序结束时销毁。除了静态内存和栈内存,程序还拥有一块内存池,这...翻译 2018-05-28 14:36:08 · 475 阅读 · 0 评论 -
C++11新特性
Lambda 表达式Lambda 表达式就是用于创建匿名函数的。为什么说 lambda 表达式如此激动人心呢?举一个例子。标准 C++ 库中有一个常用算法的库,其中提供了很多算法函数,比如 sort() 和 find()。这些函数通常需要提供一个“谓词函数 predicate function”。所谓谓词函数,就是进行一个操作用的临时函数。比如 find() 需要一个谓词,用于查找元素满足的...转载 2018-09-04 00:25:01 · 116 阅读 · 0 评论 -
C++String深浅拷贝问题
1.浅拷贝://浅拷贝class String{public: String(const char* str) : _str(new char[strlen(str) + 1]) { strcpy(_str, str); } //拷贝构造 String(const String& str)//浅拷贝--s1和s2同时会指向同一块空间。 : _str(str._str原创 2016-07-04 15:11:07 · 409 阅读 · 0 评论 -
C地址空间测试
#include#includeint g_val = 100;//全局变量void test(){ int a = 10; int b = 10; printf("test stack1 address:0x%x\n", &a); printf("test stack1 address:0x%x\n", &b);}void(*fp)();int main(){ int原创 2016-07-24 00:07:50 · 272 阅读 · 0 评论 -
单链表实现约瑟夫环
语塞夫环问题:问题来历:据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而Josephus 和他的朋友并不想遵从。原创 2016-04-29 14:24:17 · 508 阅读 · 0 评论 -
逆置/反转单链表
思路:摘结点法//逆置/反转单链表#includeusing namespace std;typedef int DataType;typedef struct SListNode{ DataType data; //数据 struct SListNode * next; //指向下一个结点的指针}SListNode;SListN原创 2016-04-29 21:50:54 · 282 阅读 · 0 评论 -
new和malloc的区别
来源:melonstreet链接:http://www.cnblogs.com/QG-whz/p/5140930.html前言几个星期前去面试C++研发的实习岗位,面试官问了个问题:new与malloc有什么区别?这是个老生常谈的问题。当时我回答new从自由存储区上分配内存,malloc从堆转载 2016-05-02 11:57:57 · 326 阅读 · 0 评论 -
优先级队列
#include #include//仿函数比较小templatestruct Less{ bool operator() (const T& l, const T& r) { return l < r; }};//仿函数比较大templatestruct Greater{ bool operator() (const T& l, const T& r) {原创 2016-05-04 23:48:51 · 212 阅读 · 0 评论 -
C++基础知识
内置类型:C++中这些基本的数据类型也称为内置类型,也就是语言内部已定义的基本类型。自定义类型:自己用struct/class/enum/union等定义的就是自定义类型。名字空间:namspace name解决全局命名冲突的问题;::是作用域解析符 cout是标准输出流对象 cin 是标准输入流对象 >>是输入操作符函数重载:在同一个作用域内,一组原创 2016-04-21 20:16:15 · 255 阅读 · 0 评论 -
2.C++基础知识
引用作为参数:可以替代指针,提高效率。一般不要返回临时变量的引用int& fun(){ int ret = 10; return ret;}intmain(){ int m = fun(); cout system("pause"原创 2016-04-22 20:44:10 · 274 阅读 · 0 评论 -
C++智能指针总结
智能指针RAII:资源分配及初始化,定义一个类来封装资源的分配和初始化,在构造函数完成资源的分配和初始化,在析构函数完成资源的清理,可以保证资源的正确初始化和释放#pragmaonce//AutoPtr 智能指针templateclassT>classAutoPtr{public: //构造函数原创 2016-03-24 15:37:38 · 330 阅读 · 0 评论 -
智能指针1---AutoPtr
AutoPtr: 其主要思路是管理权的转移,当有新对象指向这块空间时,将原指针置空,实现管理权的转移。#pragma once templateclass AutoPtr{public: AutoPtr() :_ptr(NULL) {} AutoPtr(T* ptr) :_ptr(ptr) {} //拷贝构造 AutoPtr(const AutoPtr原创 2016-06-04 15:38:17 · 253 阅读 · 0 评论 -
智能指针2--ScopedPtr
ScopedPtr:1.将拷贝构造和赋值运算符重载设为protected类型。2.定义构造函数和赋值运算符重载函数。#pragma oncetemplateclass ScopedPtr{public: ScopedPtr() //无参 :_ptr(NULL) {} ScopedPtr(T* ptr) :_ptr(ptr)原创 2016-06-04 15:45:40 · 276 阅读 · 0 评论 -
智能指针3---SharedPtr
SharedPtr:1.利用引用计数来解决拷贝构造和赋值运算符重载的问题。#pragma oncetemplateclass SharedPtr{public: SharedPtr() :_ptr(NULL) , _pCount(0) {} SharedPtr(T* ptr) :_ptr(ptr) ,_pCount(new int(1))原创 2016-06-04 15:48:09 · 271 阅读 · 0 评论 -
《More Effective C++》条款27:如何让类对象只在栈(堆)上分配空间?
昨天一个同学去网易面试C++研发,问到了这么一个问题:如何限制一个类对象只在栈(堆)上分配空间?一般情况下,编写一个类,是可以在栈或者堆分配空间。但有些时候,你想编写一个只能在栈或者只能在堆上面分配空间的类。这能不能实现呢?仔细想想,其实也是可以滴。在C++中,类的对象建立分为两种,一种是静态建立,如A a;另一种是动态建立,如A* ptr=new A;这两种方式是有区别的。转载 2016-05-23 10:03:14 · 314 阅读 · 0 评论 -
C++ 虚函数表解析
C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。关于虚函数的使用方法,我在这里不做过转载 2016-06-29 21:31:39 · 259 阅读 · 0 评论 -
剖析C++对象模型
C++对象模型:#includeusing namespace std;class Base{public: virtual void fun1() { cout << "Base::func1()" << endl; } virtual void fun2() { cout << "Base::func2()" << endl;原创 2016-06-29 21:34:27 · 217 阅读 · 0 评论 -
[c语言] 调用函数实现求两个数中的最大值
#include<stdio.h>int max(int x, int y){ int max = 0; if (x < y) { max = y; } else { max = x; } return max;}int main(){ int a, b, c; int max(int x, int y); printf("请输入两个整数...原创 2015-10-28 21:40:29 · 26001 阅读 · 5 评论