- 博客(19)
- 收藏
- 关注
原创 C++函数对象
//函数对象:重载函数调用操作符的类, 其对象常称为函数对象(function object), 即它们是行为类似函数的对象。 一个类对象, 表现出一个函数的特征, 就是通过“对象名+(参数列表)”的方式使用一个类对象, 如果没有上下文, 完全可以把它看作一个函数对待。这是通过重载类的 operator()来实现的。“在标准库中, 函数对象被广泛地使用以获得弹性”, 标准库中的很多算法都...
2019-02-24 22:32:26 116
原创 sizeof的小陷阱
int main() { int i=1; printf(“%d,%d\n”,sizeof(++i),i); return 0;} 知识点在于关键字sizeof(i++),由于sizeof()是计算内存大小,对立面的变量数值不会改变,并且立面的运算不会成立,因此i++没有执行,所以i不变。...
2019-02-23 21:11:57 182
原创 树的层次遍历,vector,,dequeue,stack
方法在于使用队列(queue)和数组(vector)将树的根结点放入队列,然后取队头元素,判断这个元素对应的结点是否存在左右孩子结点,存在就将其放入队列中,并且执行出队操作,将队头元素放入数组中。 例题1、从上往下打印出二叉树的每个节点,同层节点从左至右打印/*struct TreeNode { int val; struct TreeNode *left; struct ...
2019-02-23 20:57:42 515
原创 练习链表的小应用
在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5 链表的应用都是在了解了基本操作后,能够对应不同的问题有不同的算法思路,这个其实是相当难的,所以需要我们多多练习/*struct ListNode { int...
2019-02-23 13:28:45 131
原创 原型模式
Prototype模式是一种对象创建型模式,它采取复制原型对象的方法来创建对象的实例。使用Prototype模式创建的实例,具有与原型一样的数据。1)由原型对象自身创建目标对象。也就是说,对象创建这一动作发自原型对象本身。2)目标对象是原型对象的一个克隆。也就是说,通过Prototype模式创建的对象,不仅仅与原型对象具有相同的结构,还与原型对象具有相同的值。3)根据对象克隆深度层次的不同,有浅度...
2018-05-24 18:43:27 100
原创 建造模式
Builder模式也叫建造者模式或者生成器模式,是由GoF提出的23种设计模式中的一种。Builder模式是一种对象创建型模式之一,用来隐藏复合对象的创建过程,它把复合对象的创建过程加以抽象,通过子类继承和重载的方式,动态地创建具有复合属性的对象。对象的创建:Builder模式是为对象的创建而设计的模式- 创建的是一个复合对象:被创建的对象为一个具有复合属性的复合对象- 关注对象创建的各部分的创...
2018-05-19 22:03:10 166
原创 三种工厂模式
简单工厂模式:通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。#include<iostream>using namespace std;class Fruit{public: virtual void show()=0; };class Apple:public Fruit{public: void show() { co...
2018-05-19 21:58:03 257
原创 c++设计模式(八)
设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。单例模式又分为懒汉式和饿汉式#include<io...
2018-05-19 21:38:58 104
原创 c++的栈解旋操作(七)
#include<iostream>using namespace std;class Test{ int m_a;public: Test() { cout<<"constructor"<<endl; } ~Test() { cout<<"destructor"<<endl; }};in
2018-05-03 19:20:48 378
原创 c++中virtual的用法实践(六)
#include<iostream>using namespace std;class Employee //员工类{public: int m_id; char *m_name; double m_money;public: static int m_num; Employee(char *n); virtual double Getmoney(...
2018-04-20 21:42:18 323
原创 c++虚函数继承与虚继承(五)
虚函数继承和虚继承是完全不同的两个概念。虚函数继承是解决多态性的,当用基类指针指向派生类对象的时候,基类指针调用虚函数的时候会自动调用派生类的虚函数,这就是多态性,也叫动态编联。可以说是针对成员函数问题,使得基类指针可以使用各自派生类的成员函数而不造成冲突。虚继承就是为了节约内存,他是多重继承中的特有的概念。适用于菱形继承形式,可以说是针对同一个基类继承下来的同一个成员对象...
2018-04-17 19:49:02 213
原创 c++运算符重载(四)
运算符进行重载的目的:C++预定义中的运算符的操作对象只局限于基本的内置数据类型,但是对于我们自定义的类型(类)是没有办法操作的。但是大多时候我们需要对我们定义的类型进行类似的运算,这个时候就需要我们对这么运算符进行重新定义,赋予其新的功能,以满足自身的需求。 C++运算符重载的实质:运算符重载的实质就是函数重载或函数多态。运算符重载是一种形式的C++多态。目的在于让人能够用同名的函数来完成不同的...
2018-04-12 14:41:37 174 1
原创 c++类的小知识(三)
#include <stdio.h>#include<iostream>using namespace std;class Test{ char name[10];public: static int m_sum; Test(char *p); static int GetSum();};int Test::m_sum=0;Test::Test...
2018-03-30 23:21:45 95
原创 c++类的逐步了解(二)
#include <iostream>using namespace std;class Test{private: int m_a; int m_b; int m_c;public: Test(int a, int b, int c); Test(int a, int b); int GetC(); ~Test();};Test::Test(int a, int ...
2018-03-29 22:42:17 155
转载 C++的构造函数与析构函数
C类的构造函数和析构函数构造函数声明和定义引用参数与构造函数使用构造函数定义对象默认构造函数析构函数声明和定义析构函数的执行时机const成员函数实例演示开发环境:Visual Studio 201012构造函数当我们需要在对象创建时初始化一些数据的时候,我们不可能提供一个普通的成员方法供程序猿在对象创建后调用。因为如果程序猿故意或者无意间忘记了调用该方法,就可能导致程序出现偏离预期的结果。...
2018-03-28 19:17:32 154
原创 最基本的单链表同学录
/*****************************************************copyright (C), 2014-2015, Jinling Institute of TecnologyFile name:12.5.cAuthor: Zhang.Y.F Version:0.1 Date: 2017-12-08 23:17Description:Func
2018-01-17 21:30:41 484
原创 数组与指针(1)
#includeint main(){ int a[4]={1,2,3,4}; int *p=(int *)(&a+1); printf("%d",*(p-1)); return 0;}答案是4,原因在于&a扫过了整个数组,而不是取数组首地址。如果改成以下形式:#includeint main(){ int a[
2017-12-04 20:16:43 131
原创 宏定义的首次接触
#include#include#define SQR(x) x*xint main(){ int a; int k=3; a=++SQR(k+1); printf("%d",a);}这题的答案是9,这题教会了我宏定义的一个规则是“只做替换,不做运算”。
2017-11-23 19:01:04 203
转载 初步了解
1. 什么是计算机程序?什么是编程语言?为什么需要编程语言?编程语言是用来干嘛的?举例一些编程语言,以及他们各自的特点?① 计算机的程序是有一系列的机器指令组成的,而指令就是要计算机执行某种操作的命令。② 是用来定义计算机程序的形式语言。它是一种被标准化的交流技巧,用来向计算机发出指令。一种计算机语言让程序员能够准确地定义计算机所需要使用的数据,并精确地定义在不同情况下所应当采取的行动。...
2017-11-17 18:27:16 326
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人