自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(181)
  • 收藏
  • 关注

原创 博客迁移&人生的一些小感悟

亲爱的博友,亲爱的那个时候的自己:      人生蹉跎,已经好久没看过自己的博客了,回头看来,那个时候懵懂的自己,历历在目。      非常感谢曾经在这里和未曾谋面的博友一起挥洒过汗水,仍记得曾经为了csdn的徽章,每月至少发4篇原创文章,也非常感谢那些引导我进入博客的优秀同学,也感谢看过的那些优秀的博客,感谢!      因邮箱变更等缘故,博客迁移到地址 http://blog.csdn.net...

2018-03-01 23:18:04 520 1

原创 人生恰如三月花

人生恰如三月花,倾我一生一世念。   来如飞花散似烟,醉里不知年华限。

2016-03-07 19:23:32 1184 1

原创 C++ 购物车代码 简易版1.0

一个简单的购物车代码,仅支持名字查找删除,一次只能操作购物车里的一个商品总结:1.每5行代码就要进行一下测试2.基础知识要熟练牢靠//good.h#ifndef _GOOD_H#define _GOOD_H#include using std::string;class good{ private: string goodname; //唯一标识商品 do

2014-03-16 01:13:41 5030

原创 C++ STL算法

STL算法用来处理容器,用模板函数实现。//STLalgorithm.cpp#include#include#includeusing namespace std;void dump(int i){cout<<i<<endl;}bool odd(int i){return i%2!=0;}bool comp(const int& i1, const int& i2){ r

2014-03-12 20:24:21 1234

原创 C++ 自定义迭代器

程序员可以根据需要定义自己的迭代器。MyIterator//print.h#include#includetemplate inline void PRINT_ELEMENTS(const T& coll, const std::string& optstr=""){ std::cout<<optstr; std::cout<<std::endl;}//assoite

2014-03-12 19:44:51 5706

原创 C++ reverse iterators

反向迭代器使算法按照与迭代器移动相反的顺序遍历元素。双向迭代器和随机迭代器的rbegin和rend可以获得反向迭代器。#include#include#includeusing namespace std;void print(int elem){ cout<<elem<<" ";}int main(){ list coll; for(int i=1;i<10;i

2014-03-12 19:08:50 805

原创 C++ stream iterators

流迭代器对流进行读写。作用:    —重定向输入输出#include#include#include#includeusing namespace std;int main(){ istream_iterator eof; istream_iterator in(cin); vector coll; copy(istream_iterator(cin), eof

2014-03-12 18:54:44 789

原创 C++ Insert iterator

Inserters 使算法以输入模式操作。赋值:在容器中插入一个值移动三种inserters:Back inserters:push_back()#include#include#include#include#include#include#includeusing namespace std;int main(){ list coll1; for(in

2014-03-11 15:00:05 1210

原创 C++ 输出迭代器

输出迭代器只能够向一个序列写入数据,它可以被修改和引用。通常用于将数据从一个位置拷贝到另一个位置。除了具有输入迭代器的所有功能外,输出迭代器还具有

2014-03-11 08:55:19 4110

原创 C++ map示例

map是一种集合,其中包含0个或多个不排序的元素对(key, value)。key不重复。multimap是允许key重复的map。常用函数:insert, []#pragma warning(disable : 4786) //屏蔽4786警告#include#includeusing namespace std;typedef map TMyMap;void Pri

2014-03-10 10:41:23 1061

原创 C++ set示例

set是一种集合,其中包含0个或多个不重复、不排序的元素(key)multiset允许有重复key的set常用函数:insert,find//set#include#includeusing namespace std;int main(){ typedef set > IntSet; IntSet s1; s1.insert(4); s1.insert(3

2014-03-10 09:34:06 4229

原创 C++ list容器应用

//list容器应用#include#includeusing namespace std;int main(){ list lst; lst.push_back(1); lst.push_back(2); lst.push_back(3); lst.push_back(4); list::iterator iter; cout<<"从表头到表尾:"; for(ite

2014-03-10 09:08:17 1117

原创 C++ 标准模板库STL

STL是标准C++库的一部分。STL模板类为C++提供了完善的数据结构和算法。STL的特点“类型参数化”,即STL的代码中可处理任意自定义类型的对象。泛型编程(Generic Programming),它以模板为基础,弱化了实体类型的差异,简化了编程时问题抽象的模型,提供了更好的封装性和弹性。//STL示例#include#include#include

2014-03-07 11:19:33 1314

原创 C++ 断言

断言是测试某个变量是否具有正确值的有用的调试工具。assert宏测试时表达式的值        —如果表达式的值是0(假),则assert打印错误信息,并调用函数abort()以结束程序执行。—assert宏在assert.h头文件中定义。断言实例:#include#includeusing namespace std;int main(){ int x; cou

2014-03-07 11:01:07 1809

原创 C++ 类模板与无类型参数

使用无参数类型的类模板#includeusing namespace std;template class A{ T *p; public: A(T* q) { p = new T[size]; for(int i=0;i<size;i++) p[i] = *q++; } void disp() { int i; for(i=0

2014-03-06 22:04:10 2886

原创 C++ 类模板与静态成员

类模板实例化的每个模板类都有自己的类模板静态数据成员,该模板类的所有对象共享一个静态数据成员。模板类的静态数据成员应在文件范围内初始化。每个模板类有自己的类模板的静态数据成员副本。#includeusing namespace std;template class A{ T m; static T n; public: A(T a):m(a){n+=m;}

2014-03-06 21:35:42 7549

原创 C++ 类模板作为函数模板示例

类模板作为函数参数函数的形参类型可以是类模板或类模板的引用,对应的实参应该是该类模板实例化的模板类对象。带有类模板参数的函数必须是函数模板。#includeusing namespace std;template class TClass2{ T x; public: TClass2(T a){x=a;} T abs()//成员函数模板 { if(x

2014-03-06 17:20:56 3260

原创 C++ 堆栈模板

#include#include#includeusing namespace std;templateclass Stack{public: enum{ DefaultStack=50, EmptyStack=-1}; Stack(); Stack(int); ~Stack(); void push(const T&); T pop(); T topNoPop()

2014-03-06 15:14:43 1489

原创 C++ 类模板

Array模板类#includeusing namespace std;template class Array{ int size; T* aptr; //T为类型参数 public: Array(int slots=1) { size=slots; aptr=new T[slots];//为动态数组分配内存空间 } void fill_Array

2014-03-06 10:20:39 1104

原创 C++ 函数调用的匹配顺序

(1)寻找一个参数完全匹配的函数,如果找到了就调用它。(2)在1失败后,寻找一个函数模板,使其实例化,产生一个匹配的函数模板,         若找到了,就调用它。(3)在1、2均失败后,再试一试低一级的对函数的重载方法,例如通过类型转换         可产生参数匹配等,若找到了,就调用它。(4)若以上均失败,则就是一个错误的调用。#includeusing names

2014-03-05 22:32:03 4131

原创 C++ 重载函数模板

模板函数与重载是密切相关的。模板函数本身可以用多种方式重载,这需要提供其他函数模板,指定不同参数的相同函数名。#includeusing namespace std;template void dispArr(T *arr, int n)//函数模板1{ int i; for(i=0;i<n;i++) cout<<arr[i]<<" "; cout<<endl;}

2014-03-05 22:01:05 1300

原创 C++ 编写函数模板

编写函数模板的一般方法:(1)定义一个普通的函数,数据类型采用具体的普通的数据类型。(2)将数据类型参数化。(3)在函数头前用关键字template引出对类型参数名的声明。#includeusing namespace std;template T min(T x, T y){ if(x < y) return x; else return y;}int

2014-03-05 16:04:11 1842

原创 C++ 设计抽象基类的策略

(1)分析相关对象的需求,设计出一组实现公共功能的函数。(2)将这些函数作为基类的虚函数(或纯虚函数),它们定义了一个         统一的公共接口。(3)由该类基类派生出若干子类,在各子类中实现这些虚函数。#includeusing namespace std;class Container //抽象类{protected: double radius;publi

2014-03-05 14:58:49 2860

原创 C++ 抽象类

抽象类是为了抽象和设计的目的而建立的,处于继承层次结构的上层。具体类是能够建立对象的类。抽象类的规定(1)抽象类只能用作其他类的基类,不能建立抽象类对象。(2)抽象类不能用作参数类型、函数返回类型或显式转换的类型。(3)可以定义指向抽象类的指针和引用,此指针可以指向它的派生类,进而实现多态性。#includeusing namespace std;const doub

2014-03-05 13:58:09 30219 1

原创 C++ 纯虚函数

纯虚函数是被标明为不具体实现的虚函数     virtual 类型 函数名(参数名)=0;纯虚函数的实现留给该基类的派生类去做。#includeusing namespace std;class A{public: virtual void disp(int n){ cout<<"A::disp n="<<n<<endl; }};class B:public A

2014-03-05 11:12:03 1972

原创 C++ 多态示例代码

注意类型和槽号#includeusing namespace std;class A{public: virtual void disp(int n){ cout<<"A::disp n="<<n<<endl; }};class B:public A{public: virtual void disp(double m){ cout<<"B::disp m="

2014-03-05 09:54:06 1689

原创 C++ 多态示例

#includeusing namespace std;class A{public: void f(){cout<<"class A"<<endl;}};class B{public: virtual void f(){cout<<"class B"<<endl;}};class C:public A, public B{public: virtual voi

2014-03-04 10:50:16 902

原创 C++ 虚基类的析构函数的执行顺序

(1)执行派生类的析构函数(2)调用对象成员(子对象)的析构函数,按类声明中对象成员          出现的逆序调用,而不是初始化列表中的次序。(3)调用普通基类的析构函数,多个基类则按派生类声明时列出          的逆序,从右到左调用,而不是初始化列表中的次序。同一层中对普通基类构造函数的调用总是先于虚基类的析构函数。http://blog.csdn.net/sl

2014-03-04 10:14:10 2828

原创 C++ 虚基类构造函数的执行顺序

(1)调用基类的构造函数,多个基类则按派生类声明时          列出的次序、从左到右调用,而不是初始化列表中          的次序。(2)调用对象成员(子对象)的构造函数,按类声明中          对象成员出现的次序调用,而不是初始化列表中的          次序。(3)执行派生类的构造函数。同一层中对虚基类构造函数的调用总是先于普通基类的构造函数。

2014-03-04 09:20:13 6018

原创 C++ 继承的重复问题

重复继承是指一个派生类多次继承同一个基类,C++中允许出现重复继承。解决继承的重复问题解决继承的重复问题有两种方法:   —使用作用域分辨符来唯一标识并分别访问他们;   —将直接基类的共同基类设置为虚基类        》从不同的路径继承过来的该类成员在内存中            只拥有一个复制,这样就解决了同名成员的            唯一标识问题

2014-03-02 17:46:35 4958

原创 C++ 派生类指针强制指向基类对象

直接用派生类指针指向基类的对象,会导致语法错误。但是可以将派生类指针强制转换为基类指针,然后调用基类的成员。派生类对象指针=static_cast(&基类对象);#includeusing namespace std;class A{ int x;public: A(int i){x=i;} void dispa(){cout<<"x="<<x<<endl;}

2014-03-02 17:19:53 1774

原创 C++ 基类指针指向派生类对象

指向派生类对象的指针可以转换为指向基类对象的指针,但是只能引用基类成员。#includeusing namespace std;class A{ int x;public: A(int i){x=i;} void dispa(){cout<<"x="<<x<<endl;}};class B:public A{ int y;public: B(int i, in

2014-03-02 17:06:47 11378 1

原创 C++ 重命名继承成员

继承成员函数的重命名是指在派生类中不改变继承成员的功能,仅仅为该成员起一个新的名字。重命名主要用于解决两个问题:     —解决名字冲突问题     —允许派生类选择更合适的术语来命名重命名的方法    —在派生类中增加一个新名字命名的成员        函数,该成员函数的实现仅仅是调用旧        名字的函数。

2014-03-02 16:42:29 1294

原创 C++ 恢复访问权限示例

#include#includeusing namespace std;class A{ int i;public: void seta(int a){i=a;} void dispa(){cout<<"i="<<i<<endl;}};class B:private A{ int j;public: A::seta;//访问声明 A::dispa;//访问声明

2014-03-02 16:30:17 1456

原创 C++ this指针

this指针式指针常量。this指针是隐含于每一个类的成员函数的特殊指针,不需要程序员另外定义,可直接使用。this指针指向正在被某个成员函数操作的对象。#includeusing namespace std;class MyClass{ int n;public: MyClass(){} MyClass(int m){n=m;} void addvalue(int

2014-03-02 16:04:41 826

原创 C++ 类成员函数指针

指向类成员函数指针的定义格式:        类型(类名::*指针名)(参数表)给类成员函数指针赋值的格式:        指向函数的指针名=函数名程序中使用指向函数的指针调用函数的格式:       (*指向函数的指针名)(实参表)#includeusing namespace std;int s=0;class MyClass{ int m, n;pub

2014-03-02 15:12:08 850

原创 C++ 类数据成员指针

类数据成员指针的定义格式:        类型 类名::*指针名#includeusing namespace std;int s=0;class MyClass{public: MyClass(){n+=1;} void disp(){cout<<"m="<<m<<endl; cout<<"n="<<n<<endl;} int m, n; //声明数据成员};i

2014-03-02 15:02:05 1684

原创 C++ 成员函数内的static变量

成员函数的局部变量可以是static的。该变量被所有该类的对象在调用这个成员函数的时候共享。

2014-03-02 14:50:32 1974

原创 C++ 静态成员函数

静态成员函数的定义是在一般函数定义前加上static关键字调用静态成员函数的格式如下:        类名::静态成员函数名(参数表)#includeusing namespace std;int s=0;class MyClass{private: static int n; //声明数据成员public: MyClass(int a){n=a;} static

2014-03-02 14:44:55 888

原创 C++ task.h

#include "TimeStamp.h"#include #include #include #include using namespace std;class Task{private: Task();//default constructor explicitly hidden TimeStamp st; TimeStamp ft; string id; str

2014-03-01 15:32:22 1685

空空如也

空空如也

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

TA关注的人

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